2013-10-08 108 views
1

這是我很早以前應該學會的東西,但我從未做過。jquery處理多重選擇

var productDivs = $('#HomeNewProducts .ProductList li'); 

所以這裏是一個簡單的行,選擇多個李和它的孩子。現在,我們假設我想從這些元素中提取一個鏈接,以便在鏈接我追加的元素之後使用它。

var link = $('#HomeNewProducts .ProductList li .ProductDetails a').attr('href'); 
productDivs.append('<a href=\"' . link . '\"><img src="#" /></a> '); 
+0

問題不清楚:「選擇''從它的each'元素的了'鏈接。」可以提取多少鏈接?你怎麼能附加多個鏈接到你正在追加的「一個元素」?請澄清,並創建[小提琴](http://jsfiddle.net/)。 – gibberish

+0

有什麼問題? –

+0

考慮改寫這個「以後使用它來鏈接我正在追加的元素」,使用標點符號是個好主意。請在單獨一行中說明您的問題。 – Tauseef

回答

2

map也是很好的集合提取屬性的集合:

// get .`attr('href')` from each element 
var links = $('#HomeNewProducts .ProductList li .ProductDetails a'); 
var hrefs = links.map(function(link) { 
    return $(link).attr("href"); 
}); 

但因爲它看起來像要遍歷一組元素,並添加一些東西給每個,我猜你想JQuery的each

$('#HomeNewProducts .ProductList li').each(function(index, element) { 
    // find child link of the current element 
    var link = $(element).find(".ProductDetails a").attr('href'); 

    // append to the current element 
    $(element).append('<a href=\"' . link . '\"><img src="#" /></a> '); 
}); 

的總體思路Here's a simplified Fiddle

+0

謝謝。我查看了.each()文檔,但沒有意識到它可以用這種方式使用。 –

4

試試這個:

var link = $('#HomeNewProducts .ProductList li .ProductDetails a').attr('href'); 
productDivs.append('<a href=\"' + link + '\"><img src="#" /></a> '); 

加號應正確地插入link變量到字符串。

+0

你說得對。 Javascript是用於合作的。我想在PHP –

+0

它發生,我敢肯定。儘管一定要看其他答案。我認爲他們比我好。 – Kendra

0

既然您已經在productDivs中緩存了li元素,那麼我們就可以在搜索更多後代時對其進行緩存。

然後使用.each()遍歷組中選擇元素

var productDivs = $('#HomeNewProducts .ProductList li'); 
var link = productDivs.find('.ProductDetails a').each(function(){ 
    // do the appending from here 
    // this.href refers to the current link 

    productDivs.append('<a href=\"' + this.href + '\"><img src="#" /></a>'); 
});