2011-08-18 72 views
0

我有一个ID为27的图像。用jquery更改href

我需要更改围绕它的链接的href。我如何使用jQuery来做到这一点?

这是我的链接和图像属性。注意。我不能将该ID设置为链接。

<a href=""><img src="" id="27"></a> 

回答

4
$("#27").parent().attr("href", "somewhere.html"); 

这获取由选择器相匹配的元件的直接父。或者,您可以使用closest,它遍历DOM树直到找到匹配的元素,但我假设img将始终是a元素的直接子元素。

但是,请注意,id属性值不能以数字开头,除非您使用HTML5 doctype

更新

已经出现在许多答案分裂舆论对使用parent()closest("a")的这个问题,我把一个快速的性能测试在一起,并在Chrome 12至少,该parent()方法明显更快(当我运行它时速度超过30%)。

这是link to the test

+0

的微不足道的性能差异是不是一个好足够的理由写在大多数情况下脆弱的代码。 – RSG

+0

@RSG - 同意,但在这种情况下,'img'将始终是'a'元素的直接子元素的可能性非常高。 –

+0

首先,吉米,道具的基准该死的东西,而不是假设“父”更快。但根据你的测试,'父'需要24μs,'最接近'需要35μs,相差只有**11μs**!这需要95,000 **次迭代,延迟一秒钟(在旧式的Mac上运行过时的Firefox版本 - 现代化的安装可能要快得多)。 @RSG是对的。但是,再次感谢您的加倍努力。 – Malvolio

1

使用parent选择器和attr方法。

$('#27').parent().attr('href', someNewValue); 
2

也许是这样的:

$('#27').closest('a').attr('href','newLink.html');

+0

+1使用更通用的'最接近',不像你所有的书呆子。 – Malvolio

+0

D'oh,现在@RSG正在咬你。 – Malvolio

+0

非常快速的绘制:) – RSG

0

已经考虑

$("#27").parent().attr("href", "something.html"); 

因为这会工作的任何一个。

0

詹姆斯答案很好。

在设计更改的情况下,我更喜欢使用closest而不是parent

$("#27").closest("a").attr("href","infinityandbeyond.com") 
1
var $mylink="test_link.html"; 
$('#27').parent().attr('href',$mylink);