Joe*_*Fan 6 jquery jquery-ui jquery-ui-draggable
我正在尝试helper为jQueryUI 编写一个函数,以便将项目的属性设置为从"可拖动"列表拖动到"可排序"列表.(我需要这样做的原因是最新版本的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" ) );
}
});
Run Code Online (Sandbox Code Playgroud)
当我将项目从可拖动列表拖动到可排序列表时,它将在控制台中打印:
dragId: itemA
sortable start: dragId= undefined
sortable stop: dragId= undefined
Run Code Online (Sandbox Code Playgroud)
我希望它能打印出来:
dragId: itemA
sortable start: dragId= itemA
sortable stop: dragId= itemA
Run Code Online (Sandbox Code Playgroud)
这是JsBin上的完整示例(带有HTML)
您正在帮助元素dragId上设置属性,因此您应该使用而不是:ui.helperui.item
console.log("sortable start: dragId=", ui.helper.attr("dragId"));
Run Code Online (Sandbox Code Playgroud)
编辑: Nicola Peluchetti在下面的评论中是正确的:ui.helper确实会null在stop活动期间.因为你很可能想使用dragId该事件过程中的属性,一个解决方法是在过程中的属性复制start事件,当两个ui.helper和ui.item可供选择:
$("#sortable").sortable({
start: function(event, ui) {
ui.item.attr("dragId", ui.helper.attr("dragId"));
console.log("sortable start: dragId=", ui.item.attr("dragId"));
},
stop: function(event, ui) {
console.log("sortable stop: dragId=", ui.item.attr("dragId"));
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12592 次 |
| 最近记录: |