注意动态添加的类

IT技术 javascript jquery event-listener
2021-03-14 21:54:32

如果类被动态添加到元素,是否有一个监听器可以让我观察和运行代码?我正在使用 WordPress CMS 和一个插件,我正在使用我们动态添加一个类,我想在发生这种情况时赶上并运行一些自定义代码。

change / onChange 似乎不起作用:

$('#test').change(function(){
    alert('test');
});

我可以添加另一个监听器来捕捉这个吗?

一开始我认为这并不重要,但是在 ajax 调用之后添加了动态类。我目前正在尝试与之合作,ajaxComplete()但没有任何运气。

3个回答

尝试

$(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
    // i.e.g., 
    alert(mutation.type);
    target.innerHTML = "class added: " 
                       + "<em>" 
                       + target.className 
                       + "</em>";
  });    
});

// 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。

仅供参考,您可以这样做$('#test').hasClass('invalid')
2021-04-17 21:54:32