【问题标题】:jQuery UI sortable click eventjQuery UI 可排序点击事件
【发布时间】:2012-10-18 16:17:57
【问题描述】:

我有 2 个可排序的列表(#sortable1 和 #sortable2),我创建了 2 个 click() 函数来处理每个可排序项目的点击事件($("#sortable1 li").click(function(){})$("#sortable2 li").click(function(){}))。

我将 1 个项目从 #sortable1(例如:Sort1 Item 2)列表移动到 #sortable2 列表。问题是当项目移动到#sortable2 并且我尝试单击它时,触发的鼠标事件是$("#sortable1 li").click(function(){}) 而不是$("#sortable2 li").click(function(){})

任何建议,如果我将项目从 sortable1 移动到 sortable2 并单击该项目,该项目会触发 $("#sortable2 li").click(function(){})

演示http://jsfiddle.net/yosafatade/zX3pX/12/

【问题讨论】:

    标签: jquery jquery-ui click jquery-ui-sortable


    【解决方案1】:

    你需要使用on()查看更新http://jsfiddle.net/zX3pX/13/

    【讨论】:

    • live() 已弃用 - 使用 .on()
    • 如果您在 Sortable 中有可点击的项目,还要在 Sortable Options 上添加选项 helper : 'clone', 以防止在拖动/排序时触发点击事件。 stackoverflow.com/questions/947195/…
    【解决方案2】:

    我会使用.on,因为.delegate 已被取代。这样您就可以将事件附加到列表而不是列表项。

    使用这个:

    $("#sortable1").on("click", "li", function(){
            $("#testClickSort1").html($(this).html());
    });
    
    $("#sortable2").on("click", "li", function(){
            $("#testClickSort2").html($(this).html());
    });
    

    小提琴:http://jsfiddle.net/qkCcS/

    【讨论】:

      【解决方案3】:

      我可能会为它所在的表的每个li 项目添加一个类。例如

      <li class='sort1'></li>
      

      然后,当您在 $(".sort1") 上检查 .click 并移动项目时运行

      $(this).removeClass("sort1");
      $(this).addClass("sort2");
      

      【讨论】:

      • 我以前试过这种方法,但问题仍然存在。 @DavidMichaelHarrison 和 CrimsonChin 的答案是合适的答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-20
      • 2011-03-25
      • 1970-01-01
      • 2010-10-31
      • 1970-01-01
      • 1970-01-01
      • 2015-01-09
      相关资源
      最近更新 更多