2010-12-20 74 views
1

兄弟姐妹元素我需要使用jQuery的一些特定元素的含量的內容,問題是,我有相同的元素重複我的網頁上:獲取與jQuery

<div class="content"> 
    <img alt="" src=""> 
    <p class="txt">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p> 
    <p class="info">Lorem ipsum dolor...</p> 
    <ul> 
    <li><a class="uiButton">Test</a></li> 
    </ul> 
</div> 

因此,股利。內容在我的頁面上重複多次,我只想得到保存按鈕的div的內容被點擊。我添加了一個onclick事件上.uiButton並試圖利用母公司(「TXT‘)或兄弟姐妹(’TXT」),但不似乎工作...

$(".uiButton").click(function(){ 
    var txt = $(this).parent(".txt").text(); 
} 

回答

5

.txt不是父母,甚至那麼它必須是一個直接父(.parent()如果它選擇相匹配的直接父匹配),而不是你需要:

$(".uiButton").click(function(){ 
    var txt = $(this).closest("ul").siblings(".txt").text(); 
}); 

的另一種方法是一路走下去高達.content(通過.closest())是安全的,然後遍歷下來.find()

$(".uiButton").click(function(){ 
    var txt = $(this).closest(".content").find(".txt").text(); 
}); 
+0

感謝Nick!這真的很有幫助! – Luciano 2010-12-20 21:16:06

+0

我選擇第二種方法的原因是'ul'未命名,我更願意在結構變化的情況下選擇命名組件。 +1 – Orbling 2010-12-20 21:17:02

2

你需要去直到包裝和下來,你可以去兄弟姐妹,但在這種情況下,它會更難。

$(".uiButton").click(function(){ 
    var txt = $(this).closest('.content').find('.txt').text(); 
} 
+1

謝謝!該解決方案爲我工作。 – Luciano 2010-12-20 21:09:46

+0

@Luciano:很好。 – Orbling 2010-12-20 21:17:28

0
$(this).closest('p.txt'); 

可能會奏效。