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

时间:2012-03-22 19:25:13

标签: javascript jquery ajax

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

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

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

2 个答案:

答案 0 :(得分:3)

使用.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/

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

答案 1 :(得分:0)

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

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