2015-10-17 4 views
0

Как удалить событие для вновь созданного элемента, допустим, у меня нет контроля над этим динамическим элементом, потому что он создается из плагина, и нет возможности удалить событие во время инициализации плагина ,Удалить событие из вновь созданного элемента

Итак, в этом случае я хотел удалить событие touchmove в элементе jQuery("#dynamic_element") с использованием .off("touchmove") на загрузку страницы.

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

Есть ли способ JQuery, что я мог бы использовать для опроса, если динамический элемент, добавленный в DOM готов к манипуляциям?

Я планирую в основном ориентировать устройства iOS.

Ваши мысли были бы весьма признательны.

+0

Вы уверены, что это правильный подход? Не добавляет ли это в первую очередь не вариант? – phk

+0

Да, это было бы здорово, если бы я мог добавить событие в первую очередь. Однако я не могу этого сделать. Я уже обновил вопрос выше. Спасибо за комментарий – Vincent

+1

И я предполагаю, что события мутации/наблюдатели могут быть тем, что вы ищете, но они далеки от того, чтобы быть готовыми к библиотеке, например, jQuery, которые хотят поддерживать старые версии браузера (особенно IE и Safari). Я считаю, что даже jQuery 3 не смог реализовать его, потому что нет разумного способа его подделать. – phk

ответ

1

Решение с помощью 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 }); 
Смежные вопросы