2015-12-27 153 views
1

我有以下的html:插入後裔img元素的src屬性到父元素的href屬性

<a href="#"> 
    <img src="img-1" /> 
</a> 
<a href="#"> 
    <img src="img-2" /> 
</a> 
<a href="#"> 
    <img src="img-3" /> 
</a> 

我所試圖做的是我需要檢索其子IMG SRC的鏈接中的每一個和分別將該src插入到href中。

所以最後的結果是這樣的:

<a href="img-1"> 
    <img src="img-1" /> 
</a> 
<a href="img-2"> 
    <img src="img-2" /> 
</a> 
<a href="img-3"> 
    <img src="img-3" /> 
</a> 

謝謝。

回答

1

遍歷每個有img後裔a元素,並抓住相應src屬性:

$('a:has(img)').each(function() { 
    this.href = $(this).find('img').attr('src'); 
}); 

或者,你也可以做到這一點沒有jQuery的:

var anchors = document.querySelectorAll('a'); 
Array.prototype.forEach.call(anchors, function (a) { 
    var img = a.querySelector('img'); 
    a.href = img !== null ? a.querySelector('img').getAttribute('src') : a.href; 
}); 
+0

謝謝你,非常完美:) – danik

+0

爲什麼而不是每個選擇器中的'a> img'? – Fleuv

+0

@Fleuv因爲我不想假設'img'元素是一個直接的孩子。 –

0

JavaScript解決方案: (我喜歡原生解決方案)

var images = document.getElementsByTagName("img") 
 
for(var i = 0; i < images.length; ++i) { 
 
    if(images[i].parentElement && images[i].parentElement.tagName === "A") 
 
     images[i].parentElement.href = images[i].src 
 
}
<a href="#"> 
 
    <img src="img-1" /> 
 
</a> 
 
<a href="#"> 
 
    <img src="img-2" /> 
 
</a> 
 
<a href="#"> 
 
    <img src="img-3" /> 
 
</a>

它會得到所有圖片 - 元素放在文檔中,然後應用它的src它的父母href屬性

0

的JavaScript

var all_images=document.getElementsByTagName('img') 
for(var i=0;i<all_images.length;++i){ 
all_images[i].parentNode.href=all_images[i].src; 
console.log(all_images[i].parentNode.href) 
}