我在他们自己的div中有2个无序列表。 如果我单击第一个列表中的列表项,我希望它移动到第二个列表。在第二个列表中双击时反之亦然。
代码:
$('.filelist > ul > li > a').click(function(){
//
// Clicked file in Filelist (list 1)
//
console.log('file in list');
$(this).parent().appendTo('#queue-list');
});
$('.queuelist > ul > li > a').dblclick(function(){
//
// Clicked file in Queue (list 2
//
console.log('file in queue');
$(this).parent().appendTo('#file-list');
});
第一部分有效,列表项从列表1移到列表2。 但是当我在列表2中单击(而不是双击)时,它仍然会记录“列表中的文件”,因此不会更新已移动元素的onclick函数。
答案 0 :(得分:4)
这是因为您将处理程序绑定到实际元素。因此,当您更改thair DOM位置时,它们仍然保持在开头绑定的相同处理程序..
您需要将处理委派给ul
元素(使用.on()
方法)
$('.filelist > ul').on('click',' > li > a', function(){
//
// Clicked file in Filelist (list 1)
//
console.log('file in list');
$(this).parent().appendTo('#queue-list');
});
$('.queuelist > ul').on('dblclick',' > li > a', function(){
//
// Clicked file in Queue (list 2
//
console.log('file in queue');
$(this).parent().appendTo('#file-list');
});
演示