由html5sortable的sortupdate触发的JavaScript正在运行两次

时间:2014-11-12 05:30:49

标签: javascript html asp.net html5 html5-draggable

在aspx页面上,我有一个使用this plugin.

的可排序列表
<ul id="sortableQueue" class="sortable">
    <li style="cursor: move" data-shotid="1">Shot Name - 1</li>
    <li style="cursor: move" data-shotid="2">Shot Name - 2</li>
    <li style="cursor: move" data-shotid="3">Shot Name - 3</li>
</ul>

然后在页面底部我有代码加载可排序列表的js并设置一个名为&#34; sortupdate&#34;的函数。每次列表顺序发生变化时都会运行。

<script src="js/html.sortable.js"></script>
<script>
    $('.sortable').sortable().bind('sortupdate', function (e, ui) {
        alert(ui.oldindex + ' -> ' + ui.item.index());
    });
</script>

在这里,事情变得奇怪。在将项目从一个地方移动到另一个地方时,例如项目1到项目2的点,警报按预期工作,返回&#34; 0 - &gt; 1&#34;但是,然后另一个警告框显示完全相同的&#34; 0 - &gt; 1&#34 ;.在我看来,Javascript由于某种原因运行了两次,但我以前从未见过这样的事情,并且不知道是什么导致它。

我只需要运行一次,否则当我尝试存储新订单时会发生非常奇怪的事情。

之前有人见过类似的问题,并有一些建议吗?我无法判断它是JavaScript问题,ASP.NET问题还是html5难题,所以我甚至不知道从哪里开始。

1 个答案:

答案 0 :(得分:0)

我自己就碰到了这个,我认为它是警报的神器。尝试删除警报,并将其替换为console.log调用,并在浏览器检查器的控制台选项卡中查看日志消息。

请确保在发布时删除console.log调用...除非实际存在控制台,否则IE不喜欢它。如果在尝试将其加载到常规IE中时页面失败,您就会知道这是问题,但是当您打开控制台时,它会成功,因此您无法找到问题所在: - (