【发布时间】:2018-10-19 14:49:25
【问题描述】:
对于经常使用 JQuery 的人来说,这可能是一个简单的问题。我只是将 S3 中的列表读入数组并使用
document.getElementById('my-list').appendChild(makeUL(options));
在 id 为 my-list 的 div 中构建 ul。它看起来像这样:
<div id="my-list">
<ul id="sortable">
<li class="ui-state-default">LivePD</li>
<li class="ui-state-default">Football</li>
<li class="ui-state-default">Walking Dead</li>
<li class="ui-state-default">Survivor</li>
<li class="ui-state-default">The Voice</li>
<li class="ui-state-default">Shark Tank</li>
<li class="ui-state-default">DWTS</li>
<li class="ui-state-default">RHOOC</li>
</ul>
</div>
我的可排序功能为:
<script>
$(function() {
$("#sortable").sortable();
$("#sortable").disableSelection();
});
</script>
这就是问题所在。如果我将 ul 硬编码到我的 HTML 正文中,如上所示,可排序代码运行良好。它按预期将 ui-sortable 类添加到 ul 和 li 元素中。如果我使用 getElementById 动态构建 ul,则基本 HTML 呈现完全相同,但 sortable 不会添加类。
这是否与 DOM 的执行顺序有关?我根本想不通,也无法在任何地方找到另一个例子。对其他想法也完全开放。
【问题讨论】:
-
每次在构建 ul 之后动态调用这些
$("#sortable").sortable(); $("#sortable").disableSelection();。 -
效果很好。刚刚在 DOM 中构建 ul 后立即添加了对 sortable 函数的调用。我认为这与执行顺序有关。我还没有做太多的 web/js 开发,只是随着我的进展而弄清楚。非常感谢。
标签: javascript jquery jquery-ui html-lists jquery-ui-sortable