Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 每当div内容更改时添加自定义属性_Javascript - Fatal编程技术网

Javascript 每当div内容更改时添加自定义属性

Javascript 每当div内容更改时添加自定义属性,javascript,Javascript,我有一个空的div(id=“parent”),其中有一个第三方小部件呈现一些内容(比如div和锚定标记)。现在,每当小部件呈现div和anchor标记时,我需要向它们添加一些自定义属性 因此,我有一个变种观察者,如下所示: var parent = document.getElementById("parent"); var observer = new MutationObserver(function(mutations){ functionToAddCustomAttributes

我有一个空的div(id=“parent”),其中有一个第三方小部件呈现一些内容(比如div和锚定标记)。现在,每当小部件呈现div和anchor标记时,我需要向它们添加一些自定义属性

因此,我有一个变种观察者,如下所示:

var parent = document.getElementById("parent");
var observer = new MutationObserver(function(mutations){
    functionToAddCustomAttributes();
});

observer.observe(parent, {
  subtree: true,
  childList: true
});
在functionToAddCustomAttributes()中,我有添加属性的代码。我的问题是,如果我添加属性,它是否应该再次调用MutationObserver,因为我正在更新#parent的子级?它不应该引起无限循环吗?我的代码中似乎没有出现这种情况,所以我只想确保这是正确的方法


如果没有,是否有其他方法可以在小部件呈现内容时添加属性?

侦听父div的onDomSubTreeModified事件,而不是MutationObserver。在回调中添加自定义属性并使用return false;为了安全起见。

在添加属性的代码之后,请尝试以下操作:

$('#parent').find('#someChild').attr('name', 'value');

代码似乎使用了一些事件订阅模式的实现(类似于这样,但不是DOM事件),在本例中,我看到了以下解释,为什么没有循环:1)呈现小部件的代码确实发布事件-“完成”,由MutationObserver处理-因为MutationObserver在其上订阅;2) 在执行functionToAddCustomAttributes时,不会触发此发布事件,因此不会发生任何事情=>没有循环我认为onDomSubTreeModified效率很低,例如为每个被修改的子级触发一个事件,MutationObserver克服了这种低效。我实际上是想只在预期的元素中添加一个eventlistener,即…#parent。对不起,我不太明白。这会有什么帮助?当函数toaddCustomAttributes()完成标记的呈现时,您可以使用#父对象查找#子对象并添加自定义属性。