-3

我在一个具有相同 id 的“hrefCompare”的页面上有几个锚标记。我需要在所有这些 a 标签上动态设置 href 属性的值。

我目前正在尝试这样做:

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

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

4

3 回答 3

7

id必须是唯一的,在这种情况下,我建议您使用class,它应该可以完美地工作:

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

<a href="#" class="hrefCompare">a</b>
<a href="#" class="hrefCompare">b</b>
于 2013-07-03T16:33:31.340 回答
1

ID 在 DOM 中必须是唯一的。尝试使用类名并使用 jquery 每个函数

$('a').each(function(k,v){
  $(v).attr('href','mylink');
});
于 2013-07-03T16:36:02.400 回答
1

您不能使用ID来执行此操作(它们是唯一的),请尝试对您想要的所有元素使用相同的css 类(如果该类不存在则无关紧要) 。

HTML:

<a href="javascript:void(0);" class="hrefCompare">text1</a>
<a href="javascript:void(0);" class="hrefCompare">text2</a>

请避免使用#inhref属性(如果您关心行为)。阅读本文以了解原因: 我应该为 JavaScript 链接使用哪个“href”值,“#”还是“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属性(如- 从零开始 - ),请执行以下操作:anchorsarray

$('.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,位置0(text1 => 如果单击 => 将重定向到stackoverflow

第二 anchor,位置1(text2 =>如果点击=>将重定向到foobar

于 2013-07-03T16:34:38.133 回答