关于ajax卸载内容的DOM事件

DOM Events on ajax unloadable content?

本文关键字:DOM 事件 ajax 卸载 关于      更新时间:2023-09-26

处理与ajax可加载/可卸载内容相关的事件的正确方法是什么?

我有一个侧边栏在HTML得到隐藏和显示点击。以及两个可通过ajax加载的页面。

当侧边栏被隐藏/显示时,我需要在一个ajax加载的页面中调用resize方法。另一页没有这个需要。

$('body').on('click', '.show-sidebar', function (e) {
        //.. invoke some page1 resize methods here, only if page1 is present
    });

问题是:无论如何,我可以让上面的处理程序仅在page1的持续时间内存活,并在页面卸载后离开(未定义/无效)?

或者更好,而不是在'body'上定义事件处理程序,是否有一种方法可以在page1 dom元素上定义处理程序(以便它们侦听任何 .side-bar单击事件)?

如果我对你的问题理解正确的话,Rory在这一点上是对的。您可以使用条件来检测每个页面上对象的.length,然后委托您的事件。

$('body').on('click', '.show-sidebar', function (e) {
    if( $('#page1').length > -1 ){
        $('body').on('resize', '#your-selector', function(){
            // Do your thing
        });
    } else {
        $('body').off('resize', '#your-selector');
    }
});

希望这对你有帮助!如果我没有正确理解问题,请告诉我。