2009-12-01 94 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 2009-12-01 20:53:59

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用於顯示「綁定」的*右鍵*方式。 – 2009-12-01 20:48:23