我有兩個連接的jQuery UI排序列表。我試圖在刪除selected
類之後立即刪除它。所以如果我從左邊的列表中刪除一個項目到右邊的列表中,selected
類應該被刪除,所以它不會被突出顯示。在jQuery UI排序後刪除類?
我試過在stop, beforeStop, update, out
裏面放置$('ul').find('li.selected').removeClass('selected');
可排序的方法,但是它們都沒有被刪除掉。
我試過的其他一些東西是在stop
方法裏面添加info.item.removeClass('selected')
,但它什麼也沒做。我錯過了什麼?
這是jsfiddle。
下面是整個代碼。
$("ul").on('click', 'li', function (e) {
if (e.ctrlKey || e.metaKey) {
$(this).toggleClass("selected");
} else {
$(this).addClass("selected").siblings().removeClass('selected');
}
}).sortable({
connectWith: "ul",
delay: 150, //Needed to prevent accidental drag when trying to select
revert: 0,
helper: function (e, item) {
var helper = $('<li/>');
if (!item.hasClass('selected')) {
item.addClass('selected').siblings().removeClass('selected');
}
var elements = item.parent().children('.selected').clone();
item.data('multidrag', elements).siblings('.selected').remove();
return helper.append(elements);
},
stop: function (e, info) {
$('ul').find('li.selected').removeClass('selected');
info.item.after(info.item.data('multidrag')).remove();
}
});
HTML:
<p>Multi-select Drag</p>
<p>
<kbd>Click</kbd> to select individual items<br />
<kbd>Ctrl + Click</kbd> to select multiple items
</p>
<br />
<ul>
<li>One</li>
<li>Two</li>
<li>Three</li>
</ul>
<ul>
<li>Four</li>
<li>Five</li>
<li>Six</li>
</ul>
謝謝你這個作品,我比定時器解決方案更喜歡它。 – Yamaha32088
我剛剛注意到一個問題,但我沒有提到。如果我選擇多個項目,它不會刪除所有的類,它只會刪除一個類。 – Yamaha32088
我又看了一下,實際上有一個更簡單的方法來處理multidrag,只要做'info.item.data(「multidrag」)。removeClass('selected');' – tcooc