关于ajax无法加载内容的DOM事件?

时间:2015-10-20 16:24:40

标签: javascript jquery html ajax

处理与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点击事件)?

1 个答案:

答案 0 :(得分:1)

如果我理解你的问题,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');
    }
});

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