我想在我的集成测试中测试使用 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
事件并向其传递正确的参数。有没有简单的方法来制作这样的 event
和 ui
参数?并触发更新
。
或者,我可以编写一些 JavaScript 来实际抓取、拖放项目,但这对我来说似乎相当脆弱。或者这只是微不足道的事情?
最佳答案
在 .update()
处添加 .trigger("update")
关于jquery - 如何在 JavaScript 中触发 jQuery-sortable 的 "update"事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16014909/