如何传递jquery方法

时间:2014-02-16 09:29:06

标签: jquery ajax

是否可以使用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函数。

感谢你。

1 个答案:

答案 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);
    }
};