我正在使用这个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");
不确定如何实施。
答案 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”都是“容器”的后代(无论是否是兄弟姐妹)。