JQuery:为每个元素添加属性值

时间:2009-11-13 18:55:10

标签: jquery

嘿伙计们 - 我正在尝试将一个额外的url块添加到现有属性中,只需更新它。

$("img").each(function (i) {
    var originalSrc = $("img").attr('src');
    $("img").attr('src', 'http://www.domain-name.com/' + originalSrc);    
});

$("a").each(function (i) {
    var originalHref = $("a").attr('href');
    $("a").attr('href', 'http://www.domain-name.com/' + originalHref);    
});

它计算所有元素并将一个长字符串附加到最终属性。我明白发生了什么,但我不确定正确的方法。这显然是错误的。

基本上,我正在擦洗远程页面,我需要将所有相对连接重置为绝对。

谢谢! : - )

5 个答案:

答案 0 :(得分:26)

尝试:

$("img").each(function () {
    var originalSrc = $(this).attr('src');
    $(this).attr('src', 'http://www.domain-name.com/' + originalSrc);    
});

答案 1 :(得分:8)

更少使用(比较http://api.jquery.com/attr/):

$("img").attr('src', function(i, val){
   return 'http://www.domain.com/' + val;
});

$("a").attr('href', function(i, val){
   return 'http://www.domain.com/' + val;
});

迎接

答案 2 :(得分:1)

由于您使用each方法循环遍历元素,因此应使用回调函数中的this关键字来引用当前迭代的元素:

$("img").each(function (i) {
    var image = $(this), // 'this' is the image element being iterated
        originalSrc = image.attr('src');

    image.attr('src', 'http://www.domain-name.com/' + originalSrc);    
});

答案 3 :(得分:0)

在每个函数中使用$(this)而不是$(a)$(img)

答案 4 :(得分:0)

使用您的代码结构:

$("img").each(function (i) {
    var $img = $(this);
    var originalSrc = $img.attr('src');   // use "this" in the $() function to get the current element...
    $img.attr('src', 'http://www.domain-name.com/' + originalSrc);    
});

$("a").each(function (i) {
    var $a = $(this);
    var originalHref = $a.attr('href');
    $a.attr('href', 'http://www.domain-name.com/' + originalHref);    
});

确保在jQuery的回调函数中使用$(this)来检索节点列表中的“当前”节点。