2012-03-13 34 views

回答

3

首先,你不能有一個以上的元素與id="sortable",所以我會假設你要將它改爲class="sortable"

您可以使用帶有自定義過濾器功能的jQuery .filter(),也可以使用.not()

使用.not()

var $nodeAll = $('.sortable'); 
var $nodeLess = $('.node .sortable'); 
var $nodeFree = $nodeAll.not($nodeLess); 

使用.filter()使用自定義功能:

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必須是唯一的,因此意義不大迭代var $nodeAll = $('#sortable')each()。使用一類.sortable而不是each()您可以使用filter()將對象的集合減少爲符合某些條件的對象。

相關問題