Tag: 变异 观察者

在动态创建的元素上附加javascript / jquery事件

我已经看到了许多与此类似的不同问题,但所有这些问题通常都针对特定的选择器。 如果某处有重复,请告诉我,我已经错过了。 采取这种情况: 你想为wordpress,drupal或任何使用第三方function的网站构建一个jquery插件。 由于您事先并不知道每个特定事件和选择器,因此您需要定位如何将jquery / javascriptfunction添加到动态创建的元素中。 另外,你不知道元素是如何创建的(使用ajax / php / etc进行回调)。 例: 我最近尝试将select2或selectize添加到我的整个网站。 不幸的是,由于我无法提前确定将添加选择元素(来自其他插件/模块),我无法确保select jquery将适用于新创建的选择。 选择二 这是常规方法,但不适用于动态创建或克隆的选择: jQuery(document).ready(function($) { $(“select”).select2(); }); 如果我知道添加这些选择的所有事件,我可以简单地执行以下操作: $( “.some_button_that_creates_new_selects” ).on( “click”, function() { jQuery(“select”).select2(); }); }); 但是,由于我不知道所有动态选择的选择器(因为许多是由第三方插件添加的),所以select2将不适用于新的选择。 所以上面只适用于每个案例senerio。 我需要找到一种遍历dom树的方法,并识别何时创建新选择。 我尝试使用.on定位几个事件,但它根本不能正常工作。 我读到javascript document.getElementsByTagName识别dom中的更改并反映在集合中。 我也查看了querySelectorAll ,但不确定它是如何工作的。 我也尝试搞乱MutationObserver并检查select标签的.addednodes.length是否发生了变化,但我并没有真正得到任何结果。 UPDATE 在做了一些测试后,我意识到问题可能在于select2插件本身。 Select2加载动态选择,但没有获得定位。 Chrome最终会抛出typeerros:无法读取属性’find’的null,无法读取null的’hasclass’属性。