1

当我使用 jQuery(最新版本)开发应用程序时,我的 firefox 浏览器决定将自身更新到版本 6。在那之后,我的标准 jquery ui“可排序”功能无法正常工作。我在 jquery 网站上试过,同样的事情。尝试使用 jquery ui 包下载的演示文件 => 相同的结果。没有黑客,没有保管,只是香草。

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

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

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

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

4

3 回答 3

1

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

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

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

于 2011-08-30T08:09:05.417 回答
0

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

当我在一个元素中有一个项目时,比如一个按钮或一个文本字段,什么都没有发生。如果我右键单击字段或按钮,则会出现光标(单击按钮)。当我退出 Windows 右键单击​​选项菜单时,我可以在文本字段中输入...

所以仍然很奇怪的行为。我不知道它在 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>
于 2011-08-29T19:53:00.427 回答
0

我也有同样的问题。经过一天的测试,我发现了问题所在以及导致这种行为的原因。

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

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

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

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

总而言之,鼠标在附加了可排序事件的情况下从 div 上移开,因此对象看不到将对象放回页面的 mouseup 或 click 事件。

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

编辑

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

于 2012-06-11T12:46:55.093 回答