【问题标题】:jquery select parent problemjquery选择父级问题
【发布时间】:2009-12-01 20:31:36
【问题描述】:

下面的示例 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_cmets 不会关闭。那是因为我使用 $(this) 错误吗?这个 div 在页面上重复了很多次,实现我想要做的最好的方法是什么?

【问题讨论】:

    标签: jquery jquery-selectors


    【解决方案1】:

    你是对的,你使用 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>
    

    【讨论】:

      【解决方案2】:

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

      看看会发生什么

      【讨论】:

        猜你喜欢
        • 2023-04-04
        • 1970-01-01
        • 2012-02-17
        • 1970-01-01
        • 2011-03-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-13
        相关资源
        最近更新 更多