2012-04-21 2 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: никто не голосует на вопросы. Вопросы также должны быть проголосованы. Некоторым, возможно, понадобятся баллы, на которых будут размещаться награды. –

+0

@ Roko C. Buljan, всего 7 минут усилий, которые не требуют повышения. люди должны сначала google для опций, доступных в jQuery, а затем перейти к stackoverflow с их конкретной проблемой. Таким образом, мы просто увеличиваем количество дублирующих вопросов на SO. И когда дело доходит до компенсации булочек, у ОП достаточно репутации, чтобы начать щедрость. Если вы видите мой профиль, у меня почти равное количество голосов по вопросам и ответам. – tusar

+0

Я удивляюсь, что OP избегал так много подобных вопросов, чтобы следовать при вводе названия собственного вопроса. И все же люди, рассматривающие этот вопрос, имеют некоторые исследовательские усилия. – tusar

ответ

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 вы хотите удалить статический, вы должны использовать только селектор идентификатора (не что-то вроде $ («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

если кнопка удаления всегда существуют в уль теге (во всех ваших 4 или 5 зон), то вы может использовать следующий код.

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

в этом случае и не нужно даже дать идентификатор для DIV тегов

Смежные вопросы