我的插件必须为每个对象做不同的事情,同时我需要能够调用各种方法,并做许多其他事情。
我想在这里发生的是,当用户点击first
按钮时,它应该调用test_one
div的函数而不是test_two
。
<button class="test_one">First</button >
<button class="test_two">Second</button >
<div class="called_for"></div>
(function($){
var globalSettings = {
success: function(){}
};
var methods = {
init : function(options){
settings = $.extend({},globalSettings,options);
$(this).click(function(){
settings.success();
});
}
}
$.fn.test = function(method, options){
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);
$(".test_one").test({
success: function(){
$(".called_for").text("I got called for 'test_one'");
}
});
$(".test_two").test({
success: function(){
$(".called_for").text("I got called for 'test_two'");
}
});
答案 0 :(得分:3)
您没有声明settings
,因此它是全局的,因此被第二个插件调用覆盖。请使用var
:http://jsfiddle.net/q6e38/4/。
var settings = $.extend({}, globalSettings, options);
答案 1 :(得分:0)