简体   繁体   English

从新创建的元素中删除事件

[英]Remove event from newly created element

How can I remove event to a newly created element, let's say I have no control to that dynamic element because it is generated from a plugin and there's no way for me to remove an event during plugin initialization. 我如何将事件删除到新创建的元素上,假设我无法控制该动态元素,因为它是由插件生成的,并且我无法在插件初始化期间删除事件。

So here's the case, I wanted to remove the event called touchmove in jQuery("#dynamic_element") element using .off("touchmove") on page load. 因此,在这种情况下,我想在页面加载时使用.off("touchmove")jQuery("#dynamic_element")元素中删除名为touchmove的事件。

jQuery("#dynamic_element").off("touchmove")

Is there any jQuery method that I could use to poll if the dynamic element added in DOM is ready for manipulation? 如果DOM中添加的动态元素已准备好进行操作,是否可以使用任何jQuery方法进行轮询?

I plan to mainly target iOS devices. 我计划主要针对iOS设备。

Your thoughts would be greatly appreciated. 您的想法将不胜感激。

Solution using MutationObserver (IE11, FF, CH, SA iOS 7) 使用MutationObserver (IE11,FF,CH,SA iOS 7)的解决方案

var mo = new MutationObserver(function(e){
   e.forEach(function(record) {
       var addedNodes = Array.prototype.slice.call(record.addedNodes);           
       var dynamicElements = addedNodes.filter(function(e) { 
           return e.id && e.id === "dynamic_element";
       });

      if (dynamicElements.length) {
         jQuery(dynamicElements[0]).off("touchmove");
      }
   });
});

mo.observe(document.documentElement, { subtree: true,  childList: true });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM