我正在寻找一种在jquery函数中调用方法的方法。
示例:在上面的代码中,如何从全局范围调用method()
方法?
(function( $ ) {
$.fn.test = function() {
var method = function() {
alert('test succeeded!');
};
}
})( jQuery );
我尝试使用以下代码:
$(document).ready(function() {
$(document).test.method(); // undefined
});
但这没有用。
答案 0 :(得分:3)
您的方法仅在函数test
内可用,但您无法在范围外访问它。相反,你可以这样做。在调用它时,请记住为()
设置方法调用test
,即$(document).test().method();
而不是$(document).test.method();
(function( $ ) {
$.fn.test = function() {
var method = function() {
alert('test succeeded!');
};
return {method:method};
}
})( jQuery );
$(document).ready(function() {
$(document).test().method(); // undefined
});
使用Jquery插件模式。
(function ($) {
var methods = {
method : function () {
alert('test succeeded!');
return this; //return element for chaining
},
method2 : function () {
alert('test2 succeeded!');
return this;
}
};
$.fn.test = 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');
}
}
})(jQuery);
$(document).ready(function () {
$(document).test('method');
$(document).test('method2');
});
<强> Fiddle 强>