Javascript 每当div内容更改时添加自定义属性
我有一个空的div(id=“parent”),其中有一个第三方小部件呈现一些内容(比如div和锚定标记)。现在,每当小部件呈现div和anchor标记时,我需要向它们添加一些自定义属性 因此,我有一个变种观察者,如下所示:Javascript 每当div内容更改时添加自定义属性,javascript,Javascript,我有一个空的div(id=“parent”),其中有一个第三方小部件呈现一些内容(比如div和锚定标记)。现在,每当小部件呈现div和anchor标记时,我需要向它们添加一些自定义属性 因此,我有一个变种观察者,如下所示: var parent = document.getElementById("parent"); var observer = new MutationObserver(function(mutations){ functionToAddCustomAttributes
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()完成标记的呈现时,您可以使用#父对象查找#子对象并添加自定义属性。