gpt4 book ai didi

JQuery 插件结构。带有选项的方法、方法和选项

转载 作者:行者123 更新时间:2023-12-01 00:20:14 27 4
gpt4 key购买 nike

我一直在试图掌握一种构建插件的好方法,以便它可以接受带选项的方法调用、仅方法调用、init 上的选项以及不带选项的 init。

到目前为止,这就是我所拥有的。

(function($) {
var settings = {};
var defaults = {
args : "default args"
};
var methods = {
init : function(options) {
if(options) {
settings = $.extend({},defaults,options);
}
},
test : function(arg) {
alert("test: " + arg.args);
alert("args: " + settings.args);
}
};
$.fn.dataTable = function(method) {
var args = arguments;
var $this = this;
return this.each(function() {
if ( methods[method] ) {
return methods[method].apply( $this, Array.prototype.slice.call( args, 1 ));
} else if ( typeof method === 'object' || ! method ) {
return methods.init.apply( $this, args );
} else {
$.error( 'Method ' + method + ' does not exist on jQuery.plugin' );
}
});
};

})(jQuery);


$(document).ready(function(){
$(".tbl").dataTable();
//$(".tbl").dataTable({ args : "hello world" });
$(".tbl").dataTable("test",{args:"test args passed"});
//$(".tbl").dataTable("test");
});

但是我收到了

test: test args passed

args: undefined

有什么帮助吗?

最佳答案

(function($) {
var defaults = {
string1 : "hello ",
string2 : "world!"
};
var methods = {
init : function(options) {
if(options) {
$.extend(defaults,options);
}
alert(defaults.string1 + defaults.string2);
},
test : function(arg) {
alert("test: " + arg.args);
alert("args: " + defaults.string1 + defaults.string2);
}
};
$.fn.dataTable = function(method) {
var args = arguments;
var $this = this;
return this.each(function() {
if ( methods[method] ) {
return methods[method].apply( $this, Array.prototype.slice.call( args, 1 ));
} else if ( typeof method === 'object' || ! method ) {
return methods.init.apply( $this, Array.prototype.slice.call( args, 0 ) );
} else {
$.error( 'Method ' + method + ' does not exist on jQuery.plugin' );
}
});
};

})(jQuery);


$(document).ready(function(){
$(".tbl").dataTable();
//$(".tbl").dataTable({ string1 : "foo", string2 : "bar" });
$(".tbl").dataTable("test",{args:"test args passed"});
//$(".tbl").dataTable("test");
});

关于JQuery 插件结构。带有选项的方法、方法和选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7176744/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com