如何将 jQuery 触发的事件传递给函数
How to pass jQuery triggered event to function
我正在尝试使用jasmine测试一些javascript代码(BackBone View)
这是我尝试测试的已定义 BackBone 视图中的函数:
var aView = Backbone.View.extend({
events: {
'click #btn': 'update'
}
update: function(e){
e.preventDefault();
$.ajax({
....
});
}
});
因此,为了测试该函数,我正在尝试调用该函数,然后 spyOn $.ajax 以查看它是否使用适当的 url 调用。但是,问题是我无法将事件传递到函数中以便它执行 ajax。
这是茉莉花代码块:
it("tests update ajax", function() {
spyOn($, "ajax");
//Call update function
this.aView.update(this.aView.$("#btn").trigger("click"));
expect($.ajax).toHaveBeenCalled();
});
这是我目前收到的错误:
TypeError: Object [object Object] has no method 'preventDefault'
我希望我已经提供了所有必要的信息,并且问题很准确:)
不应直接调用 update 方法。如果您触发事件,它将起作用,这将调用更新方法。
以下内容应消除当前错误:
it("tests update ajax", function() {
this.aView.$el.find('.update').trigger("update");
this.aView.update(this.aView.$("#btn").trigger("click"));
});
如果您的观点有以下内容:
var aView = Backbone.View.extend({
events: {
'click a.update' : 'update'
},
update: function(e){
e.preventDefault();
$.ajax({
....
});
}
});
这样,您还可以检查视图事件是否设置正确。
相关文章:
- 无法在java脚本中调用图像的点击事件函数
- 如何在事件函数中访问窗口实例
- 事件函数完整日历中的多个ajax调用
- 如何使参数在事件函数中工作
- Jquery Onclick 事件函数第二次不起作用
- 宣传单:双击时不要触发点击事件函数
- Bootstrap/JQuery-单选按钮组事件函数
- 将jQuery事件函数应用于新的Knockout.js数组元素
- 防止在元素上触发新事件,直到当前事件函数在jQuery中完成
- 有没有一种方法可以将多个参数传递给主干js中的事件函数
- 用javascript更新事件函数中的全局变量
- Jquery:如何在事件函数之外获取变量
- 将参数传递给事件函数
- postMessage - 多个 postMessage 事件/函数/回调
- 多事件函数中的悬停延迟
- JavaScript 事件函数 - 在声明之前调用
- 使用 jQuery 循环设置事件函数触发器
- 暂停,直到事件/函数使用 jquery 或 JavaScript 完成
- 如何访问 jQuery 事件函数中的对象属性
- 单击事件函数未从花式盒子灯箱内触发