我构建了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到我的插件绑定的对象?
答案 0 :(得分:0)
您的代码中没有getValues
函数,我假设您的意思是getURL
。您可以使用.call
[MDN]或.apply
[MDN]明确设置this
:
methods.getURL.call(this);
这与你在
中的做法相同return methods.init.apply( this, arguments );