-1

例如,将值添加到所有新的 links 属性target或添加到具有随机值的_blank所有新<div>的 s 属性。title任何想法除了setTimout()

UPD:我需要类似的东西.attrGlobal()这个答案只允许使用 links 及其属性target来做到这一点,但如何对所有元素及其所有属性做到这一点?

UPD2MutationObserver按照SLaks 的 建议尝试,但点击添加按钮http://jsfiddle.net/1337/wvfkc/5/时 Firefox 冻结。

4

4 回答 4

1

你可以像这个答案中解释的那样做。jQuery:有没有一种方法可以自动将属性添加到动态生成的 HTML 中,就像 live() 处理事件一样?

由于.live已弃用,请.on改用。

.on这样的链接来完成你想要做的事情

$('a').on("click", function(e) {
   $(this).attr('target', '_blank');
});
于 2013-08-21T20:12:52.007 回答
1

终于找到了解决办法。

MutationObserver = window.MutationObserver || window.WebKitMutationObserver;

var observer = new MutationObserver(function() {
  $("a").attr("target", "_blank");
  $("div").attr("title", Math.floor(Math.random() * 1000));
});

observer.observe(document, {
  subtree: true,
  childList: true
});

jsfiddle.net

在您需要的选项subtree: true中,如果您更改属性,请不要添加到选项中attributes: true,因为MutationObserver(function(mutations, observer) {将进入永恒循环并且浏览器冻结。

于 2013-08-26T18:49:30.327 回答
0

答案取决于您如何添加新元素以便 jQuery 可以找到它们。为了更准确地回答,我们还需要知道元素的父级以及是否还有其他不应更改的元素。

如果通过ajax添加,最好将这段代码放在成功函数中。

$('#parentDivID a').prop('target', '_blank'); //this changes the atributes of all a element
$('#parentDivID div').prop('title', Math.floor(Math.random()*1000); //give random nr to title
于 2013-08-21T20:29:16.010 回答
0

这是你想要做的吗?(假设单击按钮会插入新元素)

function setAttrs() {
    $('a').attr('target', '_blank');
    $('div').attr('title', new Date().getTime());
}
$(function() {
    setAttrs();
    $('button').on('click', function(e) {
        e.preventDefault();
        $('body').append('<div>text</div> <a href="//google.com">google</a>');
        setAttrs();
    });
});

小提琴

于 2013-08-21T21:37:55.430 回答