嵌套jquery ui可排序:如何更新索引?
我有一个嵌套的div“列表”,应该使用jQueryUISortable对其重新排序嵌套jquery ui可排序:如何更新索引?,jquery,jquery-ui,jquery-ui-sortable,Jquery,Jquery Ui,Jquery Ui Sortable,我有一个嵌套的div“列表”,应该使用jQueryUISortable对其重新排序 <div class="sortable"> <div> <span class="sortableIndex">1</span> <div class="sortable"> <div> <span class="sortableIndex
<div class="sortable">
<div>
<span class="sortableIndex">1</span>
<div class="sortable">
<div>
<span class="sortableIndex">1</span>
</div>
<div>
<span class="sortableIndex">2</span>
</div>
</div>
</div>
<div>
<span class="sortableIndex">2</span>
<div class="sortable">
<div>
<span class="sortableIndex">1</span>
</div>
<div>
<span class="sortableIndex">2</span>
</div>
</div>
</div>
</div>
现在我想根据拖动div时元素的位置来更新元素中的数字。所以我需要一些方法来选择元素而不选择内部元素。这些元素可能位于其他元素内部,因此它们可能不是被拖动对象的直接子元素
我对JS不是很在行,所以如果有任何帮助,我将不胜感激。我找到了一个解决方案。
它通过比较最近的.sortable元素与.sortable元素(其中拖动的元素是直接子元素)来工作。如果他们匹配,我可以更新号码。如果它们不匹配,则它们不属于嵌套列表的同一级别
$('.sortable').sortable({
update: function (event, ui) {
var self = ui.item;
var p = self.parent('.sortable');
var elems = p.find('.sortableindex');
var order = 1;
elems.each(function () {
var elem = $(this);
var closest = elem.closest('.sortable');
if (closest[0] == p[0]) {
elem.text(order);
order++;
}
});
}
});
$('.sortable').sortable({
update: function (event, ui) {
var self = ui.item;
var p = self.parent('.sortable');
var elems = p.find('.sortableindex');
var order = 1;
elems.each(function () {
var elem = $(this);
var closest = elem.closest('.sortable');
if (closest[0] == p[0]) {
elem.text(order);
order++;
}
});
}
});