2012-04-21 97 views
1

你好,我有一些HTML,看起來像這樣,選擇使用jQuery

<div id="music_interests"> 
    <ul class="interests"> 
     <li > 
     <div class="interest inline"> 
     <img src=""/> 
     <div class="interest_popup"> 
      1 users have this interest. 
     <a href="http://localhost/love/index.php/my_profile/remove_interest/34" class="button red upper rounded_5 small remove">Remove interest</a>          </div> 
      </div> 
     </li> 
    </ul> 

當用戶點擊刪除按鈕,我需要選擇父DIV(在這種情況下music_interests)。我會怎麼做呢?

我曾嘗試做以下,

$(this).parent().parent().parent().parent()但有一個更優雅的方式?

讓事情變得更加複雜,我不會在應用程序中實際沒有父母身份,因爲刪除按鈕出現在頁面的4個或5個不同區域。

+0

@everybody:沒有人票上的問題。問題也應該投票。有些可能需要點獎勵。 – 2012-04-21 10:06:09

+0

@Roko C. Buljan,只需要7分鐘的努力就不值得讚揚。人們應該首先谷歌選擇可用的jQuery,然後來到他們的具體問題的計算器。這樣,我們只是增加了關於SO的重複問題的數量。而當它來補償bunties,OP有足夠的聲望來開始賞金。如果你看到我的個人資料,我的投票數量幾乎與問題和答案相同。 – tusar 2012-04-21 10:30:13

+0

我不知道OP在輸入自己問題的標題時避免了很多類似的問題。還有人在考慮這個問題有一些研究工作。 – tusar 2012-04-21 10:34:59

回答

5

你應該使用closest()

$(this).closest('div#music_interests'); 
//find the nearest div with id "music_interests" 
//if i omitted the id, it retrieves the div with class "interest_popup" 

parents()

$(this).parents('div:eq(1)'); 
//get ALL the ancestor divs (until it reaches root tag) 
//since music_interests is just 2 levels up, use :eq(1) 
0

如果你想刪除的DIV的ID是靜態的,你應該只使用ID選擇器(不是像$( 「div#music_interests」)),因爲ID選擇器直接映射到DOM功能document.getElementsById這很快:

$("#music_interests").remove(); 

如果ID不是靜態的,你可以得到UL就是這樣:

$(function(){ //execute when page has been loaded 
    $(".remove").click(function(){ //attach click handler 
     var removeDiv = $(this).closest("ul").parent().remove(); //get next UL -> DIV is its parent 
     return false; //stop further processing of "click" event 
    });  
}); 
0

如果刪除按鈕,在UL標籤始終存在(在所有4米或5個不同的區域),那麼你可以使用下面的代碼。

$(this).closest("ul").parent() 

在這種情況下,你不甚至需要給id來DIV標籤