处理与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点击事件)?
答案 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');
}
});
希望这有帮助!如果我没有正确理解这个问题,请告诉我。