是否可以使用jquery传递方法?
我的代码如下:
var BodySwitcher = {
initBodySwitcher : function(){
$(document).on("click", ".bodySwitcher", function() {
var action = $(this).attr("id");
this.ajaxCall(action, null, this.showBody());
});
},
ajaxCall : function(action, data, callback){
$.ajax({
url: action,
type: "POST",
data: data,
dataType: "json",
error: function(){
alert('Error');
},
success: function(data){
callback(data);
}
});
},
showBody : function(data){
$("#body_container").empty();
$("#body_container").html(data);
}
};
我想要做的是通过传递包含回调方法/函数在内的所有参数来重用我的ajax函数。
感谢你。
答案 0 :(得分:1)
我能看到的唯一问题是在click事件处理程序中使用this
来引用BodySwitcher
对象。
尝试
var BodySwitcher = {
initBodySwitcher: function () {
var self = this;
$(document).on("click", ".bodySwitcher", function () {
var action = $(this).attr("id");
//this here refers to the `bodySwitcher` element not the BodySwitcher object
self.ajaxCall(action, null, $.proxy(self.showBody, this));
});
},
ajaxCall: function (action, data, callback) {
$.ajax({
url: action,
type: "POST",
data: data,
dataType: "json",
error: function () {
alert('Error');
},
success: function (data) {
callback(data);
}
});
},
showBody: function (data) {
$("#body_container").empty();
$("#body_container").html(data);
}
};