注意动态添加类
如果将一个类动态添加到元素中,是否有监听器可以观察并运行代码? 我在一个WordPress CMS和一个插件我正在使用我们动态添加一个类,我想在发生这种情况时抓住并运行一些自定义代码。
change / onChange似乎不起作用:
$('#test').change(function(){ alert('test'); });
是否有另一个我可以添加的侦听器会抓住这个?
我一开始并不认为这很重要,但是在ajax调用之后会添加动态类。 我目前正在尝试使用ajaxComplete()
但没有任何运气。
尝试
$(document).ready(function() { var target = $("#test").get(0); // create an observer instance var observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { // do stuff when // `attributes` modified // ieg, alert(mutation.type); target.innerHTML = "class added: " + "" + target.className + ""; }); }); // configuration of the observer: var config = { attributes: true }; // pass in the target node, as well as the observer options observer.observe(target, config); $("#test").addClass("test-1"); // later, you can stop observing // observer.disconnect(); })
jsfiddle http://jsfiddle.net/guest271314/35cVL/
请参阅https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver
您唯一能做的就是修改插件并在添加类时触发自定义事件。 没有事件可以监听元素属性更改,原因是这些更改始终是代码引发的,因此W3假定自定义实现所需的任何事件。
如果插件的源代码不可用,您唯一的选择就是自己构建一些东西。
我能够使用ajaxComplete()
来查找通过ajax添加的动态类。
$( document ).ajaxComplete(function(){ if ($('#test').hasClass('invalid')){...} }
对任何感兴趣的人 – 如果我的WPCF7表单无效,我正在使用WordPress的Contact Form 7并使用上面的代码运行自定义jquery。