1

我使用 .load() 用新内容填充 div,但是当我这样做时,我必须调用所有脚本才能在新内容中使用它们,我相信这是导致我的事件处理程序触发两次的原因。

我错了吗?如果没有,是否有替代方法?

    $('.user').click(function(){
    if ($section !== 'users'){
        $section = 'users';
        $('div#contentWrapper').fadeOut(0).empty();
        $('div#contentWrapper').load('pages/users.html').fadeIn(500);
    }
    else{
        return;
    }

这是显然触发两次的代码。

    $('.addUser').click(function(){        
    $('.userPanel').fadeOut(0).empty();
    $('.userPanel').load('pages/addUser.html').fadeIn(500);
    });

我最初认为这是导致它的淡出,所以我将其设置为即时,但这并没有解决问题。该网站上的另一篇文章建议首先取消绑定点击处理程序,但据我了解,这是一种解决方法而不是修复方法,而是解决问题。

我是 jquery 的新手,非常感谢你们能提供的任何帮助。

4

1 回答 1

0

当你动态加载元素时,你需要使用 jQuery 的.on()函数将事件绑定到被加载的元素上。您需要绑定.on()到 DOM 中已经存在的元素,通常最坏的情况是 body 元素。如果你比body你通常会得到改进的性能更具体。

例如,如果您将表格行加载到表格中并希望在新行上绑定点击事件,您可以使用:

$("table").on("click", "tr", function(event){
    //do something
});
于 2012-09-14T02:33:18.807 回答