jQuery这个范围内插件

时间:2012-09-03 14:48:08

标签: jquery jquery-plugins scope this

我构建了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()方法时,alert显示undefined。如何调用带有范围的getValues到我的插件绑定的对象?

1 个答案:

答案 0 :(得分:0)

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

methods.getURL.call(this);

这与你在

中的做法相同
return methods.init.apply( this, arguments );