关于ajax卸载内容的DOM事件
DOM Events on ajax unloadable content?
处理与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');
}
});
希望这对你有帮助!如果我没有正确理解问题,请告诉我。
相关文章:
- DOM事件通过JSON转换为java
- 直接在DOM事件处理程序中调用作用域函数的最短方法是什么
- 如何克隆或重新调度 DOM 事件
- DOM事件链接不起作用
- 如何删除DOM事件处理程序的重复JavaScript代码
- Asp.net Ajax事件句柄如何与DOM事件协同工作
- 为什么要在DOM事件触发之前声明命名函数
- Web组件,添加Shadow DOM事件
- 谷歌地图的DOM事件没有响应
- 为什么 DOM 事件处理程序中的嵌套函数会修复“this”绑定
- 是为响应 DOM 事件而创建的多个事件对象
- 删除 DOM 事件观察器
- 列出在PhantomJS中加载的页面的所有DOM事件
- 基于类的 DOM 事件委派
- 查看元素的所有 dom 事件
- InnerView 不响应其模板中的 DOM 事件
- DOM 事件不会在 DOM 元素中冒泡
- Javascript/DOM 事件名称约定
- jsViews:将函数/助手绑定到 DOM 事件
- 为什么我不能将 DOM 事件附加到我的谷歌地图