【问题标题】:jQuery UI's Sortable update event not firingjQuery UI 的可排序更新事件未触发
【发布时间】:2015-01-09 23:01:08
【问题描述】:

我正在使用 jQuery UI 的 Sortable,我想在更新时调用一个函数。这是我现在正在尝试的代码。

$(".sortable").sortable({
    handle: '.handle'
    , start: function (event, ui) {
        console.log('started sorting ' + $(event.srcElement).index());
        prev_sortable_index = $(event.srcElement).index();
        $('.sortable li:not(.ui-state-highlight)').each(function () {
            prev_list_elements.push($(this));
            new_sort_order.push($(this).index());
        });
        console.log(new_sort_order);
    }
    , update: function (event, ui) {
        alert("testing");
    }
});

排序后,我没有收到警报消息。如果我将“更新”移到“开始”上方,我会得到相同的结果。我尝试将警报添加到开始事件、停止事件和更新事件。我没有收到任何错误或警告,只是更新事件似乎没有触发。我还确保没有任何 preventDefault 或 stopPropagation 干扰我的目标元素。

编辑:添加 HTML

<ul class="sortable no-margin no-padding" style="list-style:none;">
   <li class="item green-row"><span class="handle"><img src="~/Images/handle.png" style="width:14px; margin-top:2px;" /></span>
       <table style="width:97%;">
          <tr style="background:none;">
             <td style="width:130px;">Plan Check Fee</td>
             <td style="width:120px;">Plan Check</td>
             <td style="width:80px;">-</td>
             <td style="width:103px;">$1200.00</td>
             <td style="width:113px;">-</td>
             <td style="width:92px;">$100.00</td>
             <td style="width:100px;">$1100.00</td>
             <td style="width:88px;">$1100.00</td>
          </tr>
       </table>
    </li>
    <li class="item green-row"><span class="handle"><img src="~/Images/handle.png" style="width:14px; margin-top:2px;" /></span>
       <table style="width:97%;">
          <tr style="background:none;">
             <td style="width:130px;">Plan Check Fee</td>
             <td style="width:120px;">Plan Check</td>
             <td style="width:80px;">-</td>
             <td style="width:103px;">$1200.00</td>
             <td style="width:113px;">-</td>
             <td style="width:92px;">$100.00</td>
             <td style="width:100px;">$1100.00</td>
             <td style="width:88px;">$1100.00</td>
          </tr>
       </table>
    </li>                                               
</ul>

【问题讨论】:

  • 你能在 jsFiddle 上制作一个演示来展示这种行为吗?
  • 我无法复制我在使用 jsFiddle 时遇到的问题。一定有什么东西正在扼杀我的警报。我在开始事件中添加了一个警报,但这也不起作用。
  • 这是我得到的jsfiddle.net/n3v19wb5/1,但有一个名为prev_list_elements 的外部变量您没有包含在代码中
  • 这是我试图完成的一个小技巧。当我在我的页面上运行这个确切的代码时,我没有收到警报消息。知道什么会在我的网站上杀死这个吗? jsfiddle.net/dmv9jaua
  • 实际上我添加了一些代码并使其正常工作:jsfiddle.net/n3v19wb5/2

标签: javascript jquery html jquery-ui jquery-ui-sortable


【解决方案1】:

我终于能够解决我的问题,结果证明这是 JavaScript 引用中的冲突。我之前用过jquery.sortable.js,后来又重新使用了jQuery UI的排序的排序功能,但是没有去掉对jquery.sortable.js的引用。

【讨论】:

  • 如果问题是由共享信息无法重现的错误引起的,我建议删除它,因为它对任何人都没有帮助...
  • @TJ 似乎其他人也遇到过同样的问题,因为我看到许多非常相似的问题几乎没有任何答案。我终于能够在另一个论坛上找到一个帖子,暗示可能是参考冲突的原因。因为那是我的问题,而且答案没有在 SO 上发布,所以我想我应该继续发布这个问题。
  • 在答案的帮助下,我得到了我的问题的线索。它向我展示了解决问题的方法。所以请不要删除答案。可能其他人会从中获得帮助。
猜你喜欢
  • 1970-01-01
  • 2015-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多