2010-10-24 48 views
1

我有以下的HTML標記:DOM操作:與孩子圖像的SRC值替換href的值

<div class='photoset'> 
<a href="foo-01.html"><img src="foo-01.jpg" /></a> 
<a href="foo-02.html"><img src="foo-02.jpg" /></a> 
<a href="foo-03.html"><img src="foo-03.jpg" /></a> 
<a href="foo-04.html"><img src="foo-04.jpg" /></a> 
</div> 

我希望讓每個圖像的src值替換父的href值manuipulate的DOM鏈接元素,以便標記變爲:

<div class='photoset'> 
<a href="foo-01.jpg"><img src="foo-01.jpg" /></a> 
<a href="foo-02.jpg"><img src="foo-02.jpg" /></a> 
<a href="foo-03.jpg"><img src="foo-03.jpg" /></a> 
<a href="foo-04.jpg"><img src="foo-04.jpg" /></a> 
etc... 
</div> 

爲什麼我要這樣做,你問?我使用Flickr API將圖像拖入頁面,但希望將jQuery ColorBox插件用於圖庫效果...爲此,我相信我需要像上面那樣呈現Flickr生成的標記。

在此先感謝

安德魯

回答

3
$('.photoset a > img').each(function() { 
    this.parentNode.href = this.src; 
}); 

這遍歷是的<a>一個孩子,都包含在.photoset圖像,並設置href財產其parentNode價值爲其src

+1

+1這可能比@Slaks的版本更快。 – Tomalak 2010-10-24 16:40:11

+0

@patrick img是什麼意思,我在jquery中工作,但我從來沒有使用過這個符號,你能解釋一下嗎? – kobe 2010-10-24 16:43:13

+0

@gov - 它是[一個孩子選擇器](http://api.jquery.com/child-selector/),並且是一種限制選擇的方式,只能指導父母的孩子。這裏不是非常重要,因爲嵌套不會更深入,但可以提高其他情況下的效率。 – user113716 2010-10-24 16:46:01

2

像這樣:

$('a:has(img)').attr('href', function() { 
    return $(this).find('img').attr('href'); 
}); 
+0

+1這可能不像@帕特里克的那麼快,但它更具有慣用的w/r/t jQuery。 :)速度差異不會明顯無論如何。 – Tomalak 2010-10-24 16:43:23

+0

我同意@Tomalak。在我的答案中,可能無法察覺的性能差異可能會輕易地影響到編碼風格偏好。 – user113716 2010-10-24 16:54:49

+0

謝謝SLaks!非常感謝您的貢獻! – arsmith771 2010-10-24 21:43:39