Во-первых, вы не можете иметь более одного элемента с 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);
});