【问题标题】:JQuery .click() does not work in new sortable item [duplicate]JQuery .click() 在新的可排序项目中不起作用[重复]
【发布时间】:2016-12-24 22:14:02
【问题描述】:

我有 JQuery UI 可排序+可拖动列表,并且我对所有可排序项目使用 JQuery .click(),但如果我将新项目从可拖动列表拖放到可排序列表,则此项目不会触发 .click() 事件。

$(#sortable li).click(function(){
    alert('Sortable item clicked');
});

https://jsfiddle.net/1so55b0t/2/

为什么?


好的,我将 .click() 替换为 .on('click')

我的元素有关闭按钮,类为 .remove,这同样不适用于新元素:

$('#sortable li').on('click','.remove',function(){
    $(this).parent().remove();
});

https://jsfiddle.net/1so55b0t/4/ 为什么?

【问题讨论】:

  • 您的 jsfiddle 示例似乎可以工作。您确定将 #sortable li 作为字符串括起来吗? $("#sortable li")
  • 天啊……这个问题已经被问了万亿次了,你为什么不搜索一下

标签: javascript jquery jquery-ui


【解决方案1】:

试试这个:当您在 DOM 中移动 lis 时,它不会应用于之前绑定的点击事件处理程序。更好地使用点击事件委托,这对于像下面这样的动态/新元素很有用

$('#sortable').on('click', 'li', function(){
    alert('Sortable item clicked');
});

编辑 - 使用下面的代码为删除按钮添加点击处理程序 -

$('#sortable').on('click','li .remove',function(e) {
    e.stopPropagation();
    $(this).parent().remove();
});

JSFiddle Demo

【讨论】:

  • 这个可以,但是这个不行:$('#sortable li').on('click', '.remove', function(){ $(this).parent().remove ();});
  • 什么是.remove 按钮,你能用关闭按钮发布jsfiddle
  • 请检查我在答案中的编辑,-jsfiddle.net/1so55b0t/5
  • 感谢这项工作,但是我如何在不点击触发元素的情况下点击 del 按钮(删除)?
【解决方案2】:

因为您还需要将click 处理程序附加到新添加的元素。将您的代码更改为如下所示。查看演示 - https://jsfiddle.net/1so55b0t/3/

$('#sortable').on('click', 'li', function() {
    alert('Sortable item Clicked!');
 });

【讨论】:

    【解决方案3】:

    您可以使用此代码

     $(document).on('click', '#sortable li', function () {
     
        	alert('Sortable item Clicked!');
         });

    【讨论】:

    • 请解释一下
    猜你喜欢
    • 2014-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-13
    • 1970-01-01
    • 2017-11-06
    相关资源
    最近更新 更多