下面的示例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在页面上重复多次,实现我想要做的最好的方法是什么?
答案 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();
}
看看会发生什么