嘿伙计们 - 我正在尝试将一个额外的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);
});
它计算所有元素并将一个长字符串附加到最终属性。我明白发生了什么,但我不确定正确的方法。这显然是错误的。
基本上,我正在擦洗远程页面,我需要将所有相对连接重置为绝对。
谢谢! : - )
答案 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)
来检索节点列表中的“当前”节点。