如何为动态加载的元素添加javascript变异观察者

如何为动态加载的元素添加javascript变异观察者,javascript,jquery,html,mutation-observers,Javascript,Jquery,Html,Mutation Observers,我有一个场景,在这个场景中,DOM元素可能在页面加载时加载,也可能不加载,或者加载样式显示块,或者不加载 如果dom元素使用display块逐页加载,那么我不应该做任何事情,如果它使用style display none加载,那么我必须将观察者附加到该特定元素,一旦该元素更改为display块,那么我需要启动一个方法 目前,如果dom元素在页面加载时使用display none/block加载,则上述场景可以正常工作 但是在这个场景中,如果dom元素没有在页面加载时加载,我需要编写一个watch

我有一个场景,在这个场景中,DOM元素可能在页面加载时加载,也可能不加载,或者加载样式显示块,或者不加载

  • 如果dom元素使用display块逐页加载,那么我不应该做任何事情,如果它使用style display none加载,那么我必须将观察者附加到该特定元素,一旦该元素更改为display块,那么我需要启动一个方法
  • 目前,如果dom元素在页面加载时使用display none/block加载,则上述场景可以正常工作
  • 但是在这个场景中,如果dom元素没有在页面加载时加载,我需要编写一个watch方法,它将检查元素是否加载,并且我没有任何关于元素将在何时和谁获得append的限制。一旦元素在页面上可用,我需要遵循上面的第1点和第2点
  • 这就是我所尝试的:

    HTML:


    一般来说,您应该知道何时插入元素,何时更改属性,所以只有在非常特殊的情况下才应该使用间隔、变异观察者等。@adeneo,是的,我同意,但问题是我需要检查元素的属性更改,我不知道它什么时候会加载到页面上。谁或什么更改了属性?@LGSon:用适当的要求更改了问题描述。嗯,所以只需添加另一个MutationObserver并检查每个添加的节点的文本内容。
    <div class="test"> 1234567890 </div>
    
    var o_sel;
    var o_obj ='';
    o_obj = $("*:contains('123')*:contains('4567')");
    if(o_obj.length != 0){
        if(o_obj.last()[0].innerHTML.indexOf('890') >= 0){
            for(var i=o_obj.length-1; i>=0; --i){
                if($(o_obj[i]).is(':hidden') == true){
                    if($(o_obj[i]).css('display') == 'none'){
                        o_sel=o_obj[i];
                        break;
                    }
                }
            }
            if(o_sel){
                var o_observer = new MutationObserver(function(mutations) {
                    mutations.forEach(function(mutation) {
                        alert('found');                                                 
                    });    
                });
                var config = {attributes: true, attributeFilter: ['style']};
                o_observer.observe(o_sel,config);   
            }
        }
    }