2011-08-18 76 views
0

On“over”-ing我正在用$(this).parent.empty()重建可拖拽元素。append(...) (它们基本上包含<li>元素)的jQuery UI droppable“out”event does not trigger

的问题是,实际的元素,等待着“走出去”的功能被触发也将被删除 - >出不能被解雇

是有这种问题的任何解决方案?

回答

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 
    } 
}); 
+0

您应该避免使用'live',这是非常耗资源。代替'live',尝试'delegate',它可以绑定到将接收冒泡事件的元素。 – Husky

+0

@赫斯基我之前没有使用委托,所以我不想给错误的代码,但你是对的。它看起来更高效,因为它不搜索整个DOM。我更新了我的答案,让我知道如果这是不正确的。谢谢! – Matt

+0

你的代码看起来很好。好一个! – Husky