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[MDN]または[MDNthis ]を使用して明示的に設定できます。.call .apply

methods.getURL.call(this);

それはあなたがしているのと同じです

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