Eld*_*mir 6 jquery google-chrome jquery-ui-sortable
我一直在使用Johnny的扩展jquery sortable开发一个类似文件树的小部件,它比标准的JQuery更好地处理嵌套的sortable.
我有一个问题,用新数据重新初始化树.在Firefox中没有问题,但Chrome会起作用.这里可以看到一个最小的例子(或者在这里的jsfiddle)
在onDrop回调中,树被重新初始化.为简洁起见,所有发生的事情都是console.log,但在我的实际示例中,数据通过ajax发布到服务器,并且响应具有用于更新树的新数据.
所以,Firefox很满意这个解决方案,但是在Chrome中,一旦我拖放一次,树重新初始化,下一次拖动就会失败 Uncaught TypeError: Cannot read property 'group' of undefined
如果您sortable每次在初始化该元素之前都会销毁它,它将起作用:
function init(e) {
// First of all - we destroy the sortable
$('ul').sortable('destroy');
var root = $('<ul></ul>')
createNodes(root)
e.html(root)
root.sortable({
group: 'foo',
onDrop: function ($item, container, _super, event) {
// These two lines are default behaviour of the plugin
$item.removeClass(container.group.options.draggedClass).removeAttr("style");
$("body").removeClass(container.group.options.bodyClass);
console.log('Updating')
init(e)
}
})
}
Run Code Online (Sandbox Code Playgroud)
工作片段:
function init(e) {
// First of all - we destroy the sortable
$('ul').sortable('destroy');
var root = $('<ul></ul>')
createNodes(root)
e.html(root)
root.sortable({
group: 'foo',
onDrop: function ($item, container, _super, event) {
// These two lines are default behaviour of the plugin
$item.removeClass(container.group.options.draggedClass).removeAttr("style");
$("body").removeClass(container.group.options.bodyClass);
console.log('Updating')
init(e)
}
})
}
Run Code Online (Sandbox Code Playgroud)
function createNodes(e) {
var foo = $('<li>Foo<ul></ul></li>');
var bar = $('<li>Bar<ul></ul></li>');
var baz = $('<li>Baz<ul></ul></li>');
bar.find('ul').append(baz);
e.append(foo, bar);
}
function init(e) {
// First of all - we destroy the sortable
$('ul').sortable('destroy');
var root = $('<ul></ul>')
createNodes(root)
e.html(root)
root.sortable({
group: 'foo',
onDrop: function ($item, container, _super, event) {
// These two lines are default behaviour of the plugin
$item.removeClass(container.group.options.draggedClass).removeAttr("style");
$("body").removeClass(container.group.options.bodyClass);
console.log('Updating')
init(e)
}
})
}
$(document).ready(function(){
init($('#myroot'))
})Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
254 次 |
| 最近记录: |