【发布时间】:2011-07-19 19:28:36
【问题描述】:
我正在尝试为 jQueryUI 编写一个 helper 函数,以设置从“可拖动”列表拖动到“可排序”列表的项目的属性。 (我需要这样做的原因是最新版本的jQueryUI删除了丢弃项目的'id'属性)
但是,该属性并未进入“可排序”列表。我在辅助函数中做错了吗?
$("#draggable > li").draggable({
connectToSortable: "#sortable",
helper: function (event) {
var id = $(this).attr('id');
var ret = $(this).clone();
ret.attr('dragId', id);
console.log('dragId: ', ret.attr('dragId'));
return ret();
}
});
$( "#sortable" ).sortable({
start: function( event, ui ) {
console.log( "sortable start: dragId=", ui.item.attr( "dragId" ) );
},
stop: function( event, ui ) {
console.log( "sortable stop: dragId=", ui.item.attr( "dragId" ) );
}
});
当我将一个项目从可拖动列表拖到可排序列表时,它会在控制台中打印:
dragId: itemA
sortable start: dragId= undefined
sortable stop: dragId= undefined
我希望它打印出来:
dragId: itemA
sortable start: dragId= itemA
sortable stop: dragId= itemA
Here 是 JsBin 上的完整示例(带有 HTML)
【问题讨论】:
-
如果“最新版本的 jQueryUI 删除了已删除项目的 'id' 属性”是真的,则将 id 保存关闭并在 droppable 的 drop 事件处理程序中重新应用它(您需要添加一个droppable)。
-
全局变量,li 的子节点,任意位置。
-
注意:代码在 JsBin 示例中略有不同。这里辅助函数的最后一行后面有 (),它不应该在那里。您想返回 ret 对象,而不是执行它并返回结果。
-
jsbin 示例生成错误,不起作用。 ($ 未定义)
标签: jquery jquery-ui jquery-ui-draggable