jquery - 更新移动的 DOM 元素的点击事件

标签 jquery

我有 2 个无序列表,每个列表都有自己的 div。 如果我单击第一个列表中的列表项,我希望它移至第二个列表。双击第二个列表时反之亦然。

代码:

$('.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 函数不会更新。

最佳答案

这是因为您将处理程序绑定(bind)到实际元素。因此,当您更改 DOM 位置时,它们仍然保留在开始时绑定(bind)的相同处理程序。

您需要将处理委托(delegate)给 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');
});

演示地址:http://jsfiddle.net/gaby/XhD9H/

关于jquery - 更新移动的 DOM 元素的点击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17250312/

相关文章:

jquery - 根据该下拉列表选择隐藏和显示文本框和下拉列表?

jquery - Firefox 33 和 jquery 错误?

javascript - 在 Bootstrap header 内的搜索栏旁边添加按钮

Jquery重写url循环

javascript - jQuery 对话框 - X 按钮未显示

javascript - 从nodename和nodeindex获取html对象

javascript - 使用 JavaScript 检查对象是否已加载数据或替代文本

jquery - 使用 animate() 滑动一个 div,隐藏它

php - 使用 JQuery 无法在页面加载中触发 onchange 事件

javascript - 准备在 DOM 上执行 JQuery 函数...从模块内部吗?