如何在JavaScript中触发jQuery-sortable的“更新”事件?

时间:2013-04-15 12:15:18

标签: 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参数?并触发update

或者,我可以编写一些实际抓取,拖动和删除项目的JavaScript,但这对我来说似乎相当脆弱。或者那是微不足道的?

1 个答案:

答案 0 :(得分:2)

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

的位置