jquery选择父问题

时间:2009-12-01 20:31:36

标签: jquery jquery-selectors

下面的示例html标记

<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不会关闭。是因为即时通讯使用$(这)错了?这个div在页面上重复多次,实现我想要做的最好的方法是什么?

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:3)

检查“this”是什么,它可能指的是函数本身,而不是元素

变化

<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();
}

看看会发生什么