请先阅读本部分:
事实证明我的问题是有人使用onclick="some javascript"
,我的所有事件塞子都没有抓住。
如果这是一个社区维基帖,我没有找到关于此主题的任何信息?
我有动态加载内容的内容,我想取消绑定事件:
init 上的代码示例:
<div id="Wrap"></div>
通过AJAX加载内容后的代码示例 :
<div id="Wrap">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
我想要的是什么:
.item
可以有任何事件我有什么:
$(document).ready( handleWriteDisableds );
$(window).load( handleWriteDisableds ); // in doc ready
$( document ).ajaxComplete( handleWriteDisableds );
function handleWriteDisableds(){
$('.item').unbind() // remove all events set in doc-ready
$(document).on('click', '.item', function(e){
e.preventDefault(); // prevent default behaviour
e.stopPropagation(); // Don't bubble up
alert('no can do');
return false; // hardcore stopping stuff
});
}
我需要什么:
在动态加载后取消绑定一切。
编辑哦,原来我们有人使用了onclick属性,那些显然不会被停止。如果我有更多信息,我会更新
答案 0 :(得分:3)
尝试使用jQuery off()函数删除附加到动态添加元素的事件。 jQuery off()
在ajax成功回调中添加此内容。
$('.item').off(); // with no arguments removes all handlers attached to the elements.
答案 1 :(得分:2)
试试这个。它可以帮助您快速解决这个问题。它将解除所有事件的束缚。
修改强>
动态添加的项目将不具有处理程序 - 即,在您的情况下,除非您重新绑定处理程序,否则新添加的具有“.item”的DOM将不起作用。那么,如果你是动态添加内容(通过AJAX),那么你的动态内容如何获得附加的处理程序?
你需要弄清楚它是如何获得动态内容的处理程序的。
默认情况下,动态添加的内容没有任何处理程序绑定到它。
$(function() {
$(document).on('click', '.item', function(e) {
e.unbind();
alert('no can do')
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="Wrap">
<div class="item">Dynamic Content 1</div>
<div class="item">Dynamic Content 2</div>
<div class="item">Dynamic Content 3</div>
</div>