Jquery ui jquerydroppable-在短时间内悬停时如何反应?
我使用jQuery Dragable/Dropable将(divs)从一个列表拖到另一个列表。两个列表都有固定数量的列表项,并且列表项本身可以是空的,也可以已经包含div 我正在将div拖到列表项。如果列表项已经包含一个div,那么我希望将该div向下推到它下面的列表项,以便为我正在拖动的div让路。我可以用droppable中的“over”事件来实现这一点。但我希望只有在用户在那里暂停一段时间后,比如说0.5秒,才会发生这种情况。我该怎么做 此外,如果用户决定不放弃,那么我希望被替换的项目回到其原始位置。再说一遍,实现这一点最容易的方法是什么 谢谢你的帮助Jquery ui jquerydroppable-在短时间内悬停时如何反应?,jquery-ui,Jquery Ui,我使用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看起来不错。对于第二个问题,我想实际移动悬停上的其他项目,因此如果用户没有实际放下,那么我需要将项目移回其原始位置。我不认为这太难,但我只是在寻找一些聪明的想法。我明白你所说的与第一个被压下的项目同步的问题。在我的“出局”事件中,我希望一切都恢复原状,希望我不会有任何问题。