实现jQuery“最接近”

时间:2011-10-04 16:43:42

标签: jquery

我正在使用这个jQuery函数来查找类名为“viewCommentsExp”的父元素。

 $('.viewCommentsExpBtn').click(function(e){
    e.preventDefault();

var trackid= $(this).parent().find(".trackidField2").val();
var parent = $(this).parent().parent().parent().find(".viewCommentsExp");

        $.ajax({
            type: "POST",
            data: "trackid="+trackid,
            url: "http://rt.ja.com/viewcomments.php",
            success: function(data)
            {   
             $(".newUserComment").html(data);
            $(parent).slideToggle();

                }
            });
     });

我有大约90%的点击功能。但是,随机地,有时所有具有此类名的div都被选中而不是最接近的。

我可以使用jQuery“最接近”来清理它以更可靠地工作吗?

$(this).parent().parent().parent().find(".viewCommentsExp");

不确定如何实施。

2 个答案:

答案 0 :(得分:1)

您应该使用jQuery函数closest()

var parent = $(this).closest('.viewCommentsExp');

由于函数closest返回一个jQuery对象,因此无需再次包装它。

parent.slideToggle();

答案 1 :(得分:0)

如果点击的元素将具有您可以使用的某个特征的父级(例如,类名或其他属性),那么closest可能会有所帮助。这取决于你的HTML结构,你没有显示(截至撰写本文时,我猜你可能会添加它,但我必须消失)。

例如,如果元素将在“container”类中,并且“viewCommentsExp”是该“container”元素的后代,则:

var viewCommentsExp = $(this).closest(".container").find(".viewCommentsExp");

例如,如果您正在寻找此结构中按钮的点击次数,那将会有效:

<div class="container">
<input type="button">
<span class="viewCommentsExp">...</span>
</div>

...或任何其他结构,其中按钮和“viewCommentsExp”都是“容器”的后代(无论是否是兄弟姐妹)。