jquery - 如何在 JavaScript 中触发 jQuery-sortable 的 "update"事件?

标签 jquery jquery-ui testing jquery-ui-sortable

我想在我的集成测试中测试使用 jQuery 可排序进行的排序。为此,测试框架( capybara 、selenium)允许我调用 page.execute_script("activeAdminSortable().sortable().update()")

通过使用适当的参数触发 update 事件,我可以模拟拖放操作来测试它是否有效。 JavaScript 代码的相关部分是:

(function($) {
  $(document).ready(function() {
    $('tbody .grabber').parents('tbody').activeAdminSortable();
  });

  $.fn.activeAdminSortable = function() {
    this.sortable({
      update: function(event, ui) {
        $.ajax({
          axis: 'y',
          cursor: 'move',
          url: ui.item.find('[data-sort-url]').data('sort-url'),
          type: 'post',
          data: { position: ui.item.index() + 1 },
          success: activeAdminSortableFlashFinished
        });
      }
    });

    this.disableSelection();
  }
})(jQuery);

我需要找到一种方法来触发 update 事件并向其传递正确的参数。有没有简单的方法来制作这样的 eventui 参数?并触发更新

或者,我可以编写一些 JavaScript 来实际抓取、拖放项目,但这对我来说似乎相当脆弱。或者这只是微不足道的事情?

最佳答案

.update() 处添加 .trigger("update")

关于jquery - 如何在 JavaScript 中触发 jQuery-sortable 的 "update"事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16014909/

相关文章:

JQuery - 在背景位置改变后执行操作

javascript - Vis.js 时间线动态变化

javascript - Jquery 元素仅在页面刷新后有效

javascript - document.getElementById()的简写形式,如jQuery "dollar-sign"方法: $()

javascript - Bootstrap 单选按钮 : Get selected value on submit form

php - jQuery 自动完成将查询转换为小写

jquery-ui - 错误 : cannot call methods on spinner prior to initialization; attempted to call method 'disableWithoutRemovingValue'

testing - 使用 Closure $next 在 Laravel 中测试中间件的问题

testing - 数据流覆盖

java - 自动生成单元测试