2011-02-11 20 views
0

我需要做這樣的事情點擊的元素之前:發現在DOM的元素,它只是使用jQuery

<ul><li>something</li></ul> 
<div class='elm'>click me</div>  <!-- no 1 --> 
<ul><li>something</li></ul> 
<div class='elm'>click me</div>  <!-- no 2 --> 
<ul><li>something</li></ul> 
<div class='elm'>click me</div>  <!-- no 3 --> 
<ul><li>something</li></ul> 
<div class='elm'>click me</div>  <!-- no 4 --> 
<ul><li>something</li></ul> 
<div class='elm'>click me</div>  <!-- no 5 --> 

然後使用jQuery

$(".elm").click(function(){ 
    //some selector which returns the ul element which is just before this div element. 
}); 

我需要選擇一個UI元素,其就在被點擊的div元素之前。

就像用戶點擊div(#4)一樣,它應該返回位於div(#4)之前的ul元素。

+3

ID必須是唯一的。 – 2011-02-11 10:43:19

+0

哦,是的,這是因爲複製/粘貼,現在我編輯:) – Bhupi 2011-02-11 10:45:24

回答

3

像這樣:

$("div.elm").click(function() { 
    // Get the previous element IF it's a UL (nothing otherwise) 
    var previous = $(this).prev("ul"); 
}); 

prev在文檔中。

Live example

如果你想掃描回到最近的前一個兄弟ul,跳過任何元素之間是不是ul S,你會怎麼做:

$("div.elm").click(function() { 
    // Find a previous UL sibling, if any 
    var previous = $(this).prevAll("ul:first"); 
}); 

Live example

0

你有一個巨大的錯誤(使用驗證器,如果你不相信我:)))...你有多個具有相同ID的div添加一個櫃檯給他們或其他東西。此外,如果你添加一個計數器,你可以選擇它沒有問題。

功能選擇(ID)

{

變種X =的document.getElementById( '榆樹' + ID);

}

反正......如果你想這樣做,沒有一個計數器使用類似的onclick = 「選擇(this.index)」

1

如果你給你的元素一個類而不是一個ID來使它工作,那麼你可以使用prev

$(".elm").click(function(){ 
    var prev = $(this).prev(); 
}); 

注:的ID必須是唯一的。如果您將相同的ID分配給多個元素,則大多數操作僅在具有此ID的第一個元素上執行。