使用jQuery防止在ajax加载页面上执行脚本

我正在尝试使用load()函数加载页面,问题是加载时正在执行该页面上的javascript代码。 我用这个:

$('#itemid').load('thepage.php #selector', function() { MY CODE HERE }); 

如何防止javascript代码被执行并仅加载我想要的HTML部分?

使用.get().post()并处理你得到的内容。 在将脚本标记附加到页面之前从您返回的代码中拉出脚本标记,或者只需提取所需的代码:

 $.post('thepage.php', { data: myData }, function(data) { var myHTML = $(data).not('script'); $('#itemid').html(myHTML); }); 

要么:

 $.post('thepage.php', { data: myData }, function(data) { var myHTML = $(data).filter('#selector'); $('#itemid').html(myHTML); }); 

演示: http : //jsfiddle.net/jtbowden/wpNBM/

注意:正如您所提到的,使用带有加载的选择器应该完成相同的操作,如示例中所示。 所以,如果它没有以这种方式工作,那么还会发生其他事情。

不确定我是否正确理解了问题,但你可以删除javascript并只是拥有html。 我假设您希望js绑定在新页面上发生。 因此,当您加载新页面时,在回调中,您可以调用应用所需绑定的函数。

 function applyAfterAjax(){ $(this).find('element').click(function(){alert('clicked');}); } $('#itemid').load('thepage.php #selector',applyAfterAjax);