2012-12-16 285 views
1

這應該是簡單的,但我已經通過Jquery Selector幫助大約一個小時了,沒有任何東西似乎工作。幫幫我!jquery選擇器旁邊的元素?

我基本上是試圖在用戶點擊它旁邊的鏈接後拉一個SPAN的文本(地址)。請注意,雖然我在頁面上大約有10個,所以我無法設置靜態地址。當用戶點擊時必須拉動它。

的HTML代碼:

<a href="3" class="clicky">Click to Show Map</a> 
<span style="display: none" class="theaddy">123 Fake Street, Somewhere Else, 12341</span> 

所以真的,我的問題是,我該如何抓住從.theaddy當用戶點擊.clicky的文本?

正如我所說的,我不能使用

var propertyaddy = $(.theaddy).text(); 

,因爲有在同一頁上這些阿迪的10。我需要某種「這」「旁邊有點兒什麼。

我也拋出了把SPAN放在A裏面的想法,但是我在這方面的努力也沒有成功。

非常感謝您的幫助!

回答

3

您可以使用.next()找到任何元素的下一個兄弟。

$('.clicky').on('click', function() { 
    var text = $(this).next().text(); 
    ... 
}); 

只要您需要.theaddy元素始終是「下一個」元素沒有必要給予.next()裏面調用特定的類選擇。

如果之間可能存在其他元素,則可以使用.nextAll('.theaddy').first()。這將生成一個所有後續.theAddy元素的列表,然後採用第一個這樣的元素。

+0

我只是因爲添加了'nextAll()'方法而進行了投票,因爲我也是這樣做的。而且,在那一點上,它*覺得*就像剽竊一樣,將它添加到我自己的答案中。 =) –

+0

謝謝你。接下來就是我所期待的。謝謝。 – PaulHanak

2

我建議使用next()

text = $(this).next('.theaddy').text(); 

在我用過一種選擇器,將只獲取下一個元素,如果它的class='theaddy'上面的代碼,而沒有選擇它只會搶文本任何元素在標記中跟隨.clicky元素。

順便說一句,當你正在尋找方法遍歷的DOM,你需要看看traversing methods,而不是選擇器。

參考文獻:

+0

@PaulHanak此答案無法正確顯示如何引用單擊元素旁邊的元素。它完全符合你所說的你不能使用的內容。 – Alnitak

+0

@Alnitak,是的:我忘記它是在點擊處理程序。 Darn ... =/ –

+0

真是太簡單了! TRAVERSING方法。這個名詞肯定會對未來的工作有所幫助。謝謝大衛。我明白你的意思。我不能只使用.theaddy,因爲有多個名爲的元素。 – PaulHanak