4
我已經找到很好的解決方案(最後的答案):選擇並拖動多個列表項(jQuery UI的排序)
jQuery Sortable - Select and Drag Multiple List Items
http://jsfiddle.net/hQnWG/480/
HTML:
<ul>
<li>One</li>
<li>Two</li>
<li>Three</li>
</ul>
<ul>
<li>Four</li>
<li>Five</li>
<li>Six</li>
</ul>
JavaScript(使用jQuery和jQuery UI):
$("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) {
info.item.after(info.item.data('multidrag')).remove();
}
});
它的偉大工程,但是,當我拖着兩個或多個元素JS控制檯谷歌瀏覽器顯示此錯誤:
Uncaught TypeError: Cannot call method 'insertBefore' of null
如何解決呢?
在Safari'6.0.3'和OS X'10.8.3'沒有錯誤。另外我沒有看到'insertBefore()'在你的代碼中?問題是,一個jQuery選擇器可能失敗了'var test = $('#myNoneExcistingElement');''和'console.log(test);'會打印null或undefined。 – 2013-03-26 12:20:46
'25.0' chrome – 2013-03-26 12:26:23
@DavidChase沒有錯誤,因爲'.insertBefore()'方法在示例中不存在);或者它被用作另一種方法的替代品,但無法確認。 – 2013-03-26 12:27:11