jquery委托属性更改

时间:2015-06-11 16:44:56

标签: javascript jquery

在我的页面中,我根据另一个属性更改了元素的一个属性。像这样:

$("body").find("[data-action=new]").attr("data-original-title", "Create appointment");

这样做,此元素将显示工具提示,其中包含"创建约会"文本。

像这样我还有其他人。

当我在DOM中通过JS插入一些元素时,问题就开始了。

有没有办法委托这个操作来避免每次插入一个元素时调用它?

更新

我正在寻找一个简单的解决方案来设置我的工具提示。 DOMObserver看起来太重了,无法在这里使用。或者不是?

1 个答案:

答案 0 :(得分:1)

突变观察者似乎合适,监视addedNodes属性:

var targetNodes         = $("body"); // best to make this more specific, e.g. .myNodes
var MutationObserver    = window.MutationObserver || window.WebKitMutationObserver;
var myObserver          = new MutationObserver (mutationHandler);
var obsConfig           = { childList: true, characterData: true, attributes: true, subtree: true };

targetNodes.each ( function () {
    myObserver.observe (this, obsConfig);
} );

function mutationHandler (mutationRecords) {
    mutationRecords.forEach ( function (mutation) {
        if (typeof mutation.addedNodes == "object") {
            var jq = $(mutation.addedNodes);
            jq.find("[data-action=new]").attr("data-original-title", "Create appointment");
        }
    } );
}