2012-03-13 74 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()将对象的集合减少为符合某些条件的对象。

相关问题