所以我将我的JQuery重新设置为初始状态。这是我的代码
<script src="http://code.jquery.com/jquery-2.2.1.min.js"></script>
<a href="#" id="link1">link1</a>
<script>
var copiedObject = jQuery.extend(true, {}, this); // initial state
$(document).on( "click", "#link1", function() {
alert("clicked link 1");
return false;
});
Object.keys(this).forEach(function (c) {
if(c=='jQuery'||c=='$'){
this[c]=copiedObject[c];
}
});
</script>
当我运行它时,我仍然可以运行link1。在我添加绑定之前,不应该[jQuery]和这个[$]有副本吗?由于复制对象在我添加click事件之前有一个版本。我想实现此方法,以便我可以从较早的时间重新启动绑定。我知道我可以使用&#34; off&#34;,但是在这个例子中可以有更多的JQuery事件绑定,我只想在添加所有绑定之前重新实例化实例。
答案 0 :(得分:1)
当您使用jQuery的on()函数时,它将添加一个事件处理程序,其中包含JavaScript的本机addEventListener(如果可用)或attachEvent(如果不可用)(Internet Explorer 8及更早版本)。那些事件侦听器成为DOM对象的一部分,而不是jQuery状态。因此,您尝试通过重置jQuery状态来删除事件处理程序的方式将无法正常工作。