jquery ui 1.8.16& firefox 6 - 可排序无法正常工作

时间:2011-08-29 07:04:41

标签: jquery-ui jquery-ui-sortable firefox6

当我使用jQuery(最新版本)开发应用程序时,我的firefox浏览器决定将自己更新到版本6.在此之后,我得到了标准的jquery ui“sortable”函数无法正常工作。我试着在jquery网站上做同样的事情。尝试使用jquery ui bundle =>下载的演示文件同样的结果。没有黑客,没有客户,只有香草。

以下是症状:开始排序(通过单击并拖动鼠标),可排序元素粘在鼠标指针上。好到那里。但是当释放鼠标左键时,可排序元素会在其最终位置下降,突然,当我将鼠标移动到其他位置(没有单击鼠标按钮)时,最后排序的元素会回到鼠标并随指针一起移动。

单击页面上的某个位置会将可排序元素移回最终的放置位置,但只要再次移动鼠标,该元素就会再次粘住并且不会掉落。

有没有人遇到过firefox 6这样的错误?

仅供参考,这个可排序的功能就像FF 5.0上的魅力一样

3 个答案:

答案 0 :(得分:1)

好吧!我找到了这种奇怪行为的根本原因!它的名字是Firefox的“FireQuery 1.0”插件。

当我看到Guntram告诉我他正在使用FF6和最新版本的jQuery + jQuery-UI而没有任何问题时,我想知道这是否可能来自插件。所以我禁用了所有内容并逐个重新激活它们,每次启用后都重新启动。我找到了有罪的插件:FireQuery 1.0。

不是说这个插件并不好,但至少,如果你遇到与我相同的问题,至少现在你可能知道根本原因了。 ;)

答案 1 :(得分:0)

对我来说,排序工作正常。 元素不会意外移动。

当我在元素中有一个项目,比如按钮或文本字段时,没有任何反应。 如果我右键单击该字段或按钮,则会出现光标(单击该按钮)。 当我逃离窗口右键单击选项菜单时,我可以在文本字段中输入...

所以仍然是奇怪的行为。我不知道它如何在ff5上工作,我在ff6,最新的jquery版本。

编辑:

我找到了这个: http://weblogs.asp.net/jeffwids/archive/2011/01/31/jquery-textbox-in-sortable-is-not-clickable-selectable.aspx 我仔细看了一下jquery-sortable提供的取消选项。

我终于可以这样解决了:

<ul id="sortable">
    <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span><input type="text" value="text" ></input></li>
    <li class="ui-state-default" style="height: 70px;"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span><textarea cols="20" rows="3">textarea</textarea></li>
    <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span><button>button</button></li>
</ul>
<script>
        // initialize the sortable including the cancel option
        $( "#sortable" ).sortable({cancel: 'input,button,textarea'});
</script>

答案 2 :(得分:0)

我有同样的问题。经过一天的测试后,我发现了问题是什么以及是什么阻止了这种行为。

让我先向您展示我们正在使用的可排序类。

-----------
| Header  |
-----------
|         |
|Contents |
-----------

标题是可拖动的。如果快速不正常在拖动时移动鼠标光标并且鼠标光标以某种方式从标题移开(例如移到内容上),div 粘贴到光标。

要将div重新固定到页面上,您可以再次快速移动光标并尝试将其恢复到标题上。然后似乎事件被重新附加,你可以将div放回页面。

总而言之,鼠标会在附加可排序事件的情况下移除div,因此对象无法看到鼠标或单击将对象放回页面的事件。

不幸的是,我不知道如何解决这个问题。

修改

我们实施了一个适合我们的解决方案,但可能并不适合所有人。当在任何不可拖动的元素上发生click事件时,只需 .trigger("mouseup") 就可拖动元素。这会将可拖动元素捕捉回页面。