jQuery UI Droppable:如何让它活起来?

Posted

技术标签:

【中文标题】jQuery UI Droppable:如何让它活起来?【英文标题】:jQuery UI Droppable : how to make it live? 【发布时间】:2011-04-28 01:35:54 【问题描述】:

在this question 中,当鼠标进入要拖动的元素时,动态创建可拖动对象。

我想做同样的事情,但使用 droppables :决定是否仅在拖动元素到达它时才使元素可放置。我确信这是可能的,但经过一些研究,我无法做到。

我尝试过这样的事情,但失败了:

jQuery.fn.liveDroppable = function (opts) 
    this.live("mouseover", function() 
        if (!$(this).data("livedropinit")) 
            $(this).data("livedropinit", true).droppable(opts);
            $(this).trigger('dropover');
        
    );
;

【问题讨论】:

为什么要这样做?除非有东西悬停在顶部,否则 droppable 无论如何都没有可见的功能。 @Noufal :因为我有很多 droppables,并且一次将事件附加到所有这些事件太昂贵了。我希望仅在需要时附加事件,即在放置操作时,仅用于那些真正需要它的事件。 有道理。我认为尽管在鼠标悬停事件上执行了这种可放置的行为。仅在 将鼠标悬停在顶部之后才制作可放置的东西听起来并不可行。 【参考方案1】:

我通过使用this post 中描述的可拖动方法将其绑定到 JQuery 来实现此功能。唯一的问题是它似乎在我目前正在调查的嵌套 droppables 上存在问题。这是修改后的版本。我不得不把它改成“mouseenter”。

(function ($) 
       $.fn.liveDroppable = function (opts) 
          this.live("mouseenter", function() 
             if (!$(this).data("init")) 
                $(this).data("init", true).droppable(opts);
             
          );
       ;
(jQuery));

现在不要这样称呼它:

$(selector).droppable(opts);

...只需使用:

$(selector).liveDroppable(opts)

【讨论】:

至少在 Firefox 上的 jquery 1.10 中,mouseenter 和 mouseover 事件在拖动时不会被调用,因此该解决方案仅适用于用户在开始拖动之前移动过的元素。【参考方案2】:

这对你有用吗?这是 .hover();功能。不确定您是否尝试过。 http://api.jquery.com/hover/

【讨论】:

您可能只需执行 .hover() 并附加 html 或其他内容,以便它具有可悬停标签。您可能必须使用诸如 livequery 之类的方法来绑定元素,但不确定。

以上是关于jQuery UI Droppable:如何让它活起来?的主要内容,如果未能解决你的问题,请参考以下文章

使用 jquery-ui droppable 时,如何从 droppable 区域中删除已经删除的项目?

如何在 jQuery UI 中使用 Draggable 和 Droppable 将拖动的 li 添加到可放置的 ui 中?

如何让 Jquery UI 的 Droppable 在其左上角进入内部时接受 Draggable? [关闭]

如何使用 jquery ui 对父子 div 进行 droppable?

如何使 jQuery UI droppable hoverClass 仅适用于可拖动对象?

如何在不实际拖放的情况下使用 jQuery UI Droppable 触发 Drop 事件?