我在页面上有几个锚标签,其id为'hrefCompare'。我需要在所有这些标签上动态设置href属性的值。
我目前正在尝试这样做:
$("#hrefCompare").attr("href", "foobar.com");
但是,这仅设置具有该ID的第一个锚标记。此页面上还有7个具有相同ID“hrefCompare”。如何使用该ID设置所有href值?
答案 0 :(得分:7)
id
必须是唯一的,在这种情况下,我建议您使用class
,这应该完美无缺:
$(".hrefCompare").attr("href", "foobar.com");
<a href="#" class="hrefCompare">a</b>
<a href="#" class="hrefCompare">b</b>
答案 1 :(得分:1)
您无法使用 ID (它们是唯一的)执行此操作,请尝试使用相同的css
类来处理您想要的所有元素(不如果类不存在则无关紧要)。
<强> HTML:强>
<a href="javascript:void(0);" class="hrefCompare">text1</a>
<a href="javascript:void(0);" class="hrefCompare">text2</a>
请避免在#
属性中使用href
(如果您关心行为)。阅读本文以了解原因: Which "href" value should I use for JavaScript links, "#" or "javascript:void(0)"?
,然后强>
对于较旧的jQuery
版本,请使用.attr(..)
,否则请使用.prop(..)
$('.hrefCompare').prop('href', 'http://www.foobar.com');
<强>最后:强>
1)要为url
元素的每个href
属性分配相同的anchor
,请执行以下操作:
$('.hrefCompare').map(function(i, v){ return $(this).prop('href', 'http://www.foobar.com'); });
2)根据urls
的职位(href
- 从anchors
分配array
个$('.hrefCompare').map(function(i, v){
if(i === 0) url = 'http://www.stackoverflow.com';
if(i === 1) url = 'http://www.foobar.com';
return $(this).prop('href', url);
});
个属性 - 从零 - ),执行以下操作:
anchor
用这种方式......
首先 stackoverflow
,排名 0 : (text1 =&gt;如果点击=&gt;将重定向到{{1} }) 强>
秒 anchor
,排名 1 : (text2 =&gt;如果点击=&gt;将重定向到{{1} }) 强>
答案 2 :(得分:0)
Ids在DOM中必须是唯一的。尝试使用类名并使用jquery每个函数
$('a').each(function(k,v){
$(v).attr('href','mylink');
});