2012-03-13 1 views
1

私が選択何かがあるとします。配列変数で異なる値を選択し、jqueryの別の変数に追加するにはどうすればよいですか?

var $nodeAll = $('.sortable'); 

を、私は彼らからいくつかを選び、$ノードという名前の別の変数に追加したい場合は、私が選択したいことは「ノード」という名前のクラスを持っていない親であります:それはeach()var $nodeAll = $('#sortable')を反復するために意味をなさないので

$nodeAll.each(function() { 
     if ($(this).parents('.node').length == 0) { 
      //var $node=? what should I do? 
     } 
}); 

ありがとう

答えて

3

まず、id="sortable"の要素を複数持つことはできません。そのため、class="sortable"に変更するとします。

jQuery .filter()にカスタムフィルタ機能を使用するか、.not()を使用できます。 .not()を使用して

カスタム関数で .filter()を使用して
var $nodeAll = $('.sortable'); 
var $nodeLess = $('.node .sortable'); 
var $nodeFree = $nodeAll.not($nodeLess); 

var $nodeAll = $('.sortable'); 
var $nodeFilter = $nodeAll.filter(function() { 
    return($(this).parents('.node').length == 0); 
}); 

あなたは.sortable項目が.node自体を持っていないことを知っている場合、これはより少し効率的です以前のバージョン.closest().parents()より効率的ですが、.closest()は最初に開始ノードを検索しますが、.parents()は、最初の親ノードで始まり、現在のノードを最初に調べません。

var $nodeAll = $('.sortable'); 
var $nodeFilter = $nodeAll.filter(function() { 
    return($(this).closest('.node').length == 0); 
}); 
2

id sが一意である必要があります。 .sortableのクラスを使用し、each()の代わりにfilter()を使用すると、特定の条件を満たすオブジェクトのコレクションを減らすことができます。

関連する問題