2009-12-01 1 views
0

Пример HTML-разметки нижеJQuery выберите Родитель проблема

<div class="container answer_comments"> 
<p class="comment_text">Hey that's not cool.</p> 
<p class="comment_attribs">By Anonymous User on 01 Dec</p> 
<p class="comment_text">Is that really why?</p> 
<p class="comment_attribs">By person on 27 Nov</p> 
<p class="close_comments" onclick="close_comments()">Close</p> 
</div> 

функции JS:

function close_comments() { 
var comments_wrapper = $(this).closest('.answer_comments'); 
comments_wrapper.slideUp(); 
} 

.answer_comments не будет закрыта. заключается в том, что из-за неправильного использования $ (this)? Этот div повторяется много раз на странице, что было бы лучшим способом добиться того, что я пытаюсь сделать?

ответ

3

проверить, что "это", это, вероятно, имея в виду функции самого, а не элемент

изменение

<p class="close_comments" onclick="close_comments()">Close</p> 

в

<p class="close_comments" onclick="close_comments(this)">Close</p> 

и функции

function close_comments(element) { 
    var comments_wrapper = $(element).closest('.answer_comments'); 
    comments_wrapper.slideUp(); 
} 

и посмотреть, что произойдет

+0

, что работает, большое спасибо. – stef

5

Вы правы, что используете this. Это было бы право использования, если вы вяжете событие с JQuery:

$('.close_comments').click(function() { 
    var comments_wrapper = $(this).closest('.answer_comments'); 
    comments_wrapper.slideUp(); 
}); 

для текущего решения, вы должны были бы сделать

function close_comments(obj) { 
    var comments_wrapper = $(obj).closest('.answer_comments'); 
    comments_wrapper.slideUp(); 
} 

и

<p class="close_comments" onclick="close_comments(this);">Close</p> 
+0

+1 для отображения * правого * пути с 'bind'ing. –

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

  • Нет связанных вопросов^_^