在dom加载后,JQuery删除事件

时间:2017-10-31 19:56:28

标签: javascript jquery html events dom

我遇到了jquery的问题。

情景如下:

我使用Jquery的事件委托触发不同的自定义事件,如下所示:

$(document).trigger("myCustomEvent");

并像他们一样倾听他们:

$(document).on("myCustomEvent",function(e){
    //Triggered
});

问题是我使用AJAX动态加载页面,AJAX可能有脚本。

如果加载的页面包含Jquery,则包含会破坏事件的绑定。

有什么方法可以解决这个问题吗? jquery是否验证是否已加载?

我无法控制已加载的页面,因为它们是外部的

这是一个复制这种行为的小提琴(http://jsfiddle.net/97eca61w/15/),其中触发的事件应该出现两次..

$(document).on("myCustomEvent",null,function(e){
  	//debugger;
    $("#log").append("<p>Custom event triggered</p>");
  });

$(document).ready(function(e){
  
  //debugger;
  
  $("#contentDiv").html("<scr" + "ipt src='https://code.jquery.com/jquery-2.2.4.min.js' ></scr" + "ipt><scr" + "ipt>$(document).ready(function(e){alert('ready')})</scri" + "pt>");
  
  console.log($._data($(document)[0],"events"));
  
  $(document).trigger("myCustomEvent");
  
  setTimeout(function(){
  	debugger;
    $(document).trigger("myCustomEvent");
    console.log($._data($(document)[0],"events"));
  },1000);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<div>
  <div id="contentDiv">
  </div>
  <div id="log">
  </div>
</div>

0 个答案:

没有答案