2009-11-13 5 views
7

Эй, ребята, я пытаюсь добавить дополнительный фрагмент url к существующему атрибуту и ​​просто обновить его.JQuery: добавление значения атрибута к каждому элементу

$("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);  
}); 

Он подсчитывает все элементы и добавляет длинную строку к последнему атрибуту. Я понимаю, что происходит, но я не уверен, как правильно это сделать. Это, очевидно, неправильно.

По существу, я очищаю удаленную страницу, и мне нужно сбросить все относительные соединения на абсолютные.

Спасибо! :-)

+0

Я не уверен, я понимаю, что это неправильно часть этого? –

+0

Сегодня утром я не выпил кофе, вот что! :-) Спасибо, парни. Такая глупость, чтобы ошибиться. – ritsuke

ответ

25

Try:

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

Внутри каждой функции используют $(this) вместо $(a) и $(img).

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);  
}); 
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);  
});

Обязательно используйте $(this) функции обратного вызова jQuery для извлечения «текущего» узла в списке узлов.

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; 
}); 

Greets

Смежные вопросы