2010-04-20 21 views
6

我想找到最近的元素,其中包含一個類....這是努力找到當前元素的「堂兄」,我有.. 以下沒有工作:jquery cousin元素

$('myelement').closest ('*:has(.class1)').find('class_cousin') 

我使用*closest,因爲我不知道元素是什麼類型的,我找的人我也不知道是否有任何類或ID(我試圖保持它一般用於插件)

任何想法如何做到這一點? 謝謝

+0

你是說你知道類,你正在試圖獲得與最接近'()',或者你沒有? – user113716 2010-04-20 22:11:51

回答

8

我覺得你很接近。像這樣的東西應該工作:

$('myelement').closest(':has(.yourClass)').find('.yourClass') 

我認爲,關鍵是你要尋找的是有你正在尋找的特定類最接近的父母,則希望找到特定對象。

當然,上面的問題是它不一定找到.yourClass的一個實例。你可以有一個具有多個表親對象的父對象。我也不確定上面的查詢有多昂貴。可能存在性能問題。

+0

像一個魅力工作。 這是一個表單驗證插件(我知道有[R萬噸他們在那裏,但我想經過鍛鍊,也許讓一些更靈活的)......我猜我想說的是,性能並不重要得多這裏:) 我感謝幫助 – salmane 2010-04-20 22:19:58

0

我是新來的StackOverflow,我不知道如果我能不能這麼做,但我編輯@robjb的答案按我的需要,並張貼在這裏,萬一如果它可以幫助別人。完全信貸僅限於他。

在情況下,如果有人想只選擇特定的表兄妹,而不是所有的堂兄弟(即要用選擇),那麼我們可以用下面的函數。如果選擇器沒有作爲參數傳遞,那麼它會給所有的表兄弟。

(function($) { 
$.fn.cousins = function(selector) { 
    var cousins; 
    this.each(function() { 
     var auntsAndUncles = $(this).parent().siblings(); 
     auntsAndUncles.each(function() { 
      if(cousins == null) { 
       if(selector) 
        cousins = auntsAndUncles.children(selector); 
       else 
        cousins = auntsAndUncles.children(); 
      } 
      else { 
       if(selector) 
        cousins.add(auntsAndUncles.children(selector)); 
       else 
        cousins.add(auntsAndUncles.children()); 
      } 
     }); 
    }); 
    return cousins; 
    } 
})(jQuery) 

例使用上述功能將作爲

$(clickedObj).cousins('.singleWheel'); 

上面的回答只給表兄弟。