2013-10-08 107 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>'); 
});