0

我构建 jQuery 插件:

        (function( $ ){

            var methods = {
                init : function( options ) {
                    $.fn.queryBuilder = $.extend($.fn.queryBuilder, options);

                    return this.each(function(){

                        methods.getValues();

                        var $this = $(this),
                        data = $this.data('queryBuilder'),
                        url  = '/'+methods.createURL.call();

                        if ( ! data ) {
                            $(this).data('queryBuilder', {
                                target  : $this,
                                url     : url
                            });
                        }
                    });
                },
                getURL:function(){
                    alert $(this);
                }
    }
$.fn.queryBuilder = function( method ) {
        if ( methods[method] ) {
            return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));
        } else if ( typeof method === 'object' || ! method ) {
            return methods.init.apply( this, arguments );
        } else {
            $.error( 'Method ' +  method + ' does not exist on jQuery.tooltip' );
        }
    };
})

调用 getValues() 方法时,警报显示未定义。如何调用 getValues 与我的插件绑定的对象的范围?

4

1 回答 1

0

您的代码中没有getValues函数,我假设您的意思是getURL. 您可以this使用.call [MDN].apply [MDN]显式设置:

methods.getURL.call(this);

这和你在

return methods.init.apply( this, arguments );
于 2012-09-03T14:50:36.903 回答