如何在具有给定ID的所有元素上设置href值?

时间:2013-07-03 16:31:14

标签: javascript jquery

我在页面上有几个锚标签,其id为'hrefCompare'。我需要在所有这些标签上动态设置href属性的值。

我目前正在尝试这样做:

$("#hrefCompare").attr("href", "foobar.com");

但是,这仅设置具有该ID的第一个锚标记。此页面上还有7个具有相同ID“hrefCompare”。如何使用该ID设置所有href值?

3 个答案:

答案 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');
});