2011-10-04 51 views
0

我正在使用這個jQuery函數來查找類名爲「viewCommentsExp」的父元素。實現jQuery「最接近」

$('.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"); 

不知道如何實現這一點。

+1

你的HTML的結構是什麼? –

回答

0

如果被點擊的元素將具有可以使用的某個特性的父級(例如,類名稱或其他屬性),那麼closest可能會有所幫助。它取決於你沒有顯示的HTML結構(在撰寫本文時,我猜你可能會添加它,但我必須消失)。

例如,如果該元素將在東西與類「容器」,而「viewCommentsExp」是「容器」元素的後代,則:

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

這將工作,爲例如,如果你在這種結構上的按鈕尋找點擊:

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

...或任何其他結構,其中兩個按鈕和「viewCommentsExp」是「容器」的後代(無論是兄弟姐妹或沒有) 。

1

您應該使用jQuery功能closest()

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

由於函數closest返回一個jQuery對象,因此不需要重新包裝它。

parent.slideToggle();