Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery ui jquerydroppable-在短时间内悬停时如何反应?_Jquery Ui - Fatal编程技术网

Jquery ui jquerydroppable-在短时间内悬停时如何反应?

Jquery ui jquerydroppable-在短时间内悬停时如何反应?,jquery-ui,Jquery Ui,我使用jQuery Dragable/Dropable将(divs)从一个列表拖到另一个列表。两个列表都有固定数量的列表项,并且列表项本身可以是空的,也可以已经包含div 我正在将div拖到列表项。如果列表项已经包含一个div,那么我希望将该div向下推到它下面的列表项,以便为我正在拖动的div让路。我可以用droppable中的“over”事件来实现这一点。但我希望只有在用户在那里暂停一段时间后,比如说0.5秒,才会发生这种情况。我该怎么做 此外,如果用户决定不放弃,那么我希望被替换的项目回到

我使用jQuery Dragable/Dropable将(divs)从一个列表拖到另一个列表。两个列表都有固定数量的列表项,并且列表项本身可以是空的,也可以已经包含div

我正在将div拖到列表项。如果列表项已经包含一个div,那么我希望将该div向下推到它下面的列表项,以便为我正在拖动的div让路。我可以用droppable中的“over”事件来实现这一点。但我希望只有在用户在那里暂停一段时间后,比如说0.5秒,才会发生这种情况。我该怎么做

此外,如果用户决定不放弃,那么我希望被替换的项目回到其原始位置。再说一遍,实现这一点最容易的方法是什么

谢谢你的帮助


威廉

我碰巧也在做类似的事情。在我的例子中,我使用的是treeTable插件。如果折叠的树悬停一段时间,我想展开它。这是我到目前为止所拥有的。我今天正好在做这个。注意使用超时来延迟操作

var timeout = null;
var clear = function() {
    if (timeout) {
        clearTimeout(timeout);
        timeout = null;
    }
}

$(".selector").droppable({
    over: function(e, ui) {
        if (! $(this).is("expanded")) {
            clear();
            timeout = setTimeout(function() {
                $(this).expand();
                timeout = null;
            }, 1000);
        }
    }
    , out: clear
    , drop: function(e, ui) {
        clear();
        ...
    }
});
我还是有点问题。一个分支展开后,它下面的行被向下推,以便为展开的分支腾出空间。我还没有放弃,所以我将鼠标悬停在扩展分支中的第一个新元素上。问题是这个元素没有得到hoverClass,第一个被推到新分支下面的元素就得到了它。这就像jquery没有发现它被向下移动了一样。根据你所描述的,我想你可能会遇到这个问题

我在jquery-1.4.2上,但后来我更新到jquery-1.6.4,看看这是否能解决问题。两个版本表现出相同的行为。另外,我在Chrome 14.0.835.202、Opera 11.52、Firefox 3.6.23和IE7.0.5730.13中对此进行了测试。这在他们所有人身上都是一样的。所以,要么jquery有bug,要么我做了什么导致了这个问题


关于你的第二个问题。我不确定我是否完全理解你的意图。你在找那个吗?我正好在做类似的事情。在我的例子中,我使用的是treeTable插件。如果折叠的树悬停一段时间,我想展开它。这是我到目前为止所拥有的。我今天正好在做这个。注意使用超时来延迟操作

var timeout = null;
var clear = function() {
    if (timeout) {
        clearTimeout(timeout);
        timeout = null;
    }
}

$(".selector").droppable({
    over: function(e, ui) {
        if (! $(this).is("expanded")) {
            clear();
            timeout = setTimeout(function() {
                $(this).expand();
                timeout = null;
            }, 1000);
        }
    }
    , out: clear
    , drop: function(e, ui) {
        clear();
        ...
    }
});
我还是有点问题。一个分支展开后,它下面的行被向下推,以便为展开的分支腾出空间。我还没有放弃,所以我将鼠标悬停在扩展分支中的第一个新元素上。问题是这个元素没有得到hoverClass,第一个被推到新分支下面的元素就得到了它。这就像jquery没有发现它被向下移动了一样。根据你所描述的,我想你可能会遇到这个问题

我在jquery-1.4.2上,但后来我更新到jquery-1.6.4,看看这是否能解决问题。两个版本表现出相同的行为。另外,我在Chrome 14.0.835.202、Opera 11.52、Firefox 3.6.23和IE7.0.5730.13中对此进行了测试。这在他们所有人身上都是一样的。所以,要么jquery有bug,要么我做了什么导致了这个问题


关于你的第二个问题。我不确定我是否完全理解你的意图。您是否正在寻找

我发现我需要添加refreshPositions:true to my Dragable options来修复我所看到的问题。jquery文档说,这会极大地影响性能,因此,当我知道位置可能发生了变化时,我可能会寻找一种方法来显式刷新位置。嘿,谢谢,我一定要尝试一下。我在Javascript方面没有那么丰富的经验,也不确定如何控制超时。clearTimeout、setTimeout看起来不错。对于第二个问题,我想实际移动悬停上的其他项目,因此如果用户没有实际放下,那么我需要将项目移回其原始位置。我不认为这太难,但我只是在寻找一些聪明的想法。我明白你所说的与第一个被压下的项目同步的问题。在我的“出局”事件中,我希望一切都恢复原样,希望不会出现任何问题。我发现我需要添加refreshPositions:true to my Dragable options来修复我看到的问题。jquery文档说,这会极大地影响性能,因此,当我知道位置可能发生了变化时,我可能会寻找一种方法来显式刷新位置。嘿,谢谢,我一定要尝试一下。我在Javascript方面没有那么丰富的经验,也不确定如何控制超时。clearTimeout、setTimeout看起来不错。对于第二个问题,我想实际移动悬停上的其他项目,因此如果用户没有实际放下,那么我需要将项目移回其原始位置。我不认为这太难,但我只是在寻找一些聪明的想法。我明白你所说的与第一个被压下的项目同步的问题。在我的“出局”事件中,我希望一切都恢复原状,希望我不会有任何问题。