内联jQuery脚本在AJAX调用中不起作用

我有一个问题:
虽然我从ajax的另一个页面调用内联脚本(也使用jQuery) – 似乎jQuery没有更多的定义(?),我不能使用任何应该应用的jQuery函数(根据内联脚本)内容。

它基本上是一个新闻列表,包含特定新闻项的链接。 我现在更喜欢使用内联脚本,因为我不会在其他地方使用此function。

$.ajax({ url: href, cache: false, success: function(html){ $('#fancy_ajax').append($(html).find('.mainContentPadded')); } }); 

如您所见,我只是调用另一个页面的一部分并将其内容附加到页面。

当我加载整页(不是它的一部分)时 – jQuery按预期工作(这就是为什么我遇到了这个想法,它需要被“重新加入”)。

谢谢!

因此,如果我正确理解您的问题,您的html变量中包含一些JavaScript吗? 如果是这样,它将无法工作,因为由于安全风险,浏览器不会执行从AJAX命中检索到的JavaScript。

我建议您在页面中包含必要的javascript代码,以启动Ajax请求,以便在您添加新内容时它已经可用。

*编辑…

monksp添加了一个很棒的链接作为评论,显示如何让jQuery完全按照你的意愿行事。

这里也有一些代码可以手动执行相同操作:

   Test JavaScript JSON        

这是testjs.json的内容:

 {"html":"

Click me

","js":"$(\".newelement\").click(function() { alert($(this).text()); });"}

最后有一堆存在插件和其他东西动态地包含javascript。 我过去使用过YUI Get: http : //developer.yahoo.com/yui/3/get/

我想,我对这个问题感到困惑。 您发布的javascript是通过ajax加载到页面中的吗? 比如,你在浏览器中加载页面,然后发生了什么事情,javascript被加载到页面中? 这是行不通的,因为以这种方式加载的任何javascript都不会被执行。

如果可能的话,我建议将它加载到原始页面的javascript中。 如果没有,您可以获取ajax请求的结果,并通过它查找脚本标记,并将其内容作为成功函数的一部分eval()。 它不是真正有效(或超级安全,确保你绝对信任加载内容的来源),但它将完成工作。