2009-08-09 69 views
5

我需要獲取包含列表中街道地址的div。該div有一個類稱爲地址(div class =「address」)如何獲得jQuery.each循環中的特定元素

我不能使用jQuery(「#storeList li .address」),因爲還有其他元素需要使用。

我有以下代碼:

jQuery("#storeList li").each(function() { 
    var n = jQuery(this.address).text(); // <- This does not work 
    alert(n); 
}); 

如何訪問類型地址的每個DIV元素?

回答

12
jQuery("#storeList li").each(function() { 
    var n = jQuery(this).find(".address").text(); // <- This works 
    alert(n); 
}); 
+0

更好的是在節點名稱前加選擇器前綴 - jQuery(this).find(「div.address」) – redsquare 2009-08-09 21:00:08

+0

這取決於。如果在選擇器前加上節點名稱,則不能更改元素的結構(例如,用跨度替換div),而無需更改JavaScript代碼。另一方面,如果使用節點選擇器,jQuery可能會更快地選擇元素。 – Scharrels 2009-08-09 21:04:05

+0

是的,節點選擇器將更快地選擇一個元素。與CSS相反,如果你使選擇器過於具體,它會減慢選擇器進程。 – 2009-08-10 08:28:06

-1
jQuery("#storeList li:has(.address) .address").each(function() { 
    alert(this.innerHTML); 
}); 

避免使用第二查詢的另一種。作爲一個jQuery新手,我不知道什麼是權衡。

+0

如果你只關心地址,那麼這很好,但如果你有更多的字段,或者沒有地址處理li的話,那就不好了。另外,你不需要'li:has(.address).address',它與'li .address'相同,但速度比較慢 - 你選擇'.address',所以你知道它在那裏。 – Kobi 2009-08-10 08:08:47

+0

非常鼓舞,科比。 – 2009-08-10 13:48:45

+0

那是憤世嫉俗?我只是想幫助...順便說一下,我沒有投票,雖然這是可以理解的。 – Kobi 2009-08-10 20:03:41

2
$('#storeList li').each(function() 
{ 
    var n = $(this).find('div.address').html(); 
    alert(n); 
}); 
相關問題