【问题标题】:jQuery UI droppable "out" event doesn't triggerjQuery UI droppable "out" 事件不会触发
【发布时间】:2011-10-29 15:10:50
【问题描述】:

在“over”时,我正在通过 $(this).parent.empty().append(...) 重建可放置元素 (它们基本上由<li> 元素组成)

问题在于,等待触发“out”函数的实际元素也被删除了 --> out 不能被触发

这类问题有解决办法吗?

【问题讨论】:

    标签: jquery jquery-ui draggable droppable out


    【解决方案1】:

    您是否尝试过 .live。如果您在 DOM 已加载后创建元素,这将重新添加它。因此,如果您有类似的东西 $("#mylist li").live('handler', function(){});我不确定你在做什么,但应该是这样的。

    您可以在此处查看一些示例: http://api.jquery.com/live/

    而且你可以做多个处理程序。

    $("#mylist li").live("mouseover mouseout", function(event) {
      if ( event.type == "mouseover" ) {
        // do something on mouseover
      } else {
        // do something on mouseout
      }
    });
    

    按照赫斯基的建议进行代理:

    $("#mylist").delegate("li", "mouseover mouseout", function(event) {
      if ( event.type == "mouseover" ) {
        // do something on mouseover
      } else {
        // do something on mouseout
      }
    });
    

    【讨论】:

    • 你应该避免使用live,它非常消耗资源。代替live,试试delegate,它可以绑定到将接收冒泡事件的元素。
    • @Husky 我以前没有使用过委托,所以我不想给出错误的代码,但你是对的。它看起来确实更有效率,因为它不搜索整个 DOM。我更新了我的答案,如果这不正确,请告诉我。谢谢!
    猜你喜欢
    • 2018-09-20
    • 2012-09-06
    • 2020-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多