2

我正在使用 jQuery sortable 来允许用户<li><ul>列表中重新排列。HTML 仅包含

<ul id="uisortable"></ul>

javascript包含以下内容:

$(function() {
    $('#uisortable').sortable();
    $("#uisortable").disableSelection();
});

这些项目是从 JS 动态添加的,在添加项目之后,我正在调用

$('#uisortable').sortable("刷新");

在 FF、Opera 和 Webkit 中一切正常,但在 IE 中根本不起作用——任何版本,甚至是 IE 9。我尝试添加类似这样activate的选项:sortable

$('#uisortable').sortable({
    activate: function() {
        throw("Start sorting");
    }
});

在 IE 9 脚本调试器中,我在线上放置了一个断点throw("Start sorting")- 但该行永远不会激活。似乎在 IE 中,可排序对象根本没有将自己附加到列表中。

我将 jquery 1.4.2 与 jquery UI 1.8.13 一起使用。

有趣的是,jquery ui 可排序演示页面工作正常,所以它必须与我的代码有关 - 但我可以进一步简化多少?好吧,我可以——我做到了。我没有动态地创建项目,而是在我的 HTML 中静态地创建它们(用于测试)。我从<li>除了一行文本中删除了所有内容。现在我的 HTML 看起来像这样:

<ul id="uisortable">
    <li class="sortitem">Item 1</li>
    <li class="sortitem">Item 2</li>
    <li class="sortitem">Item 3</li>
</ul>

使用上面的javascript代码。不过,不能在 IE 中工作。并且错误控制台中没有任何类型的错误。不过在 FF、Webkit 和 Opera 中都很好。我现在完全被难住了。任何帮助是极大的赞赏。

4

2 回答 2

3

显然,问题与 jquery.ui 版本有关。我从 1.8.13 升级到 1.8.20(比将 jquery 从 1.4.2 升级到 1.7.2 容易得多) - 现在它可以工作了!

于 2012-05-18T13:56:45.773 回答
0

看看 这个 JSFiddle

在带有 JQuery 1.4.4 的 IE9 中工作正常。但是,如果我降到 JQuery 1.3.2(JSFiddle 上可用的下一个较低版本),它就会停止工作。

您可以在 JSFiddle 上“添加资源”以获取您正在使用的确切版本,但我认为使用 JQuery 1.4.4 或更高版本(使用适当版本的 JQueryUI)可以解决它。

于 2012-05-18T13:49:24.077 回答