gpt4 book ai didi

javascript - 带有选项和可访问方法的 jQuery 插件模板?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:04:10 25 4
gpt4 key购买 nike

我想构建一个具有可访问方法和选项的插件,这是一个复杂的插件。我需要这些方法可以在插件外部访问,因为如果有人向 DOM 转换广告,它就需要更新(因此我们不需要再次运行完整的插件)。

我以前看到过有这样的插件,但是我找不到,所以没法看。我还是 javascript 的新手,所以任何帮助都会很好。

如果我们仍然可以全局覆盖选项就好了。

我想如何使用插件:

// options
$('#someid').myplugin({name: 'hello world'});

// methods(would be nice if we can use this)
$('#someid').myplugin('update');

//我的旧插件包装器

;(function($, window, document, undefined){

$.fn.pluginmyPlugin = function(options) {

options = $.extend({}, $.fn.pluginmyPlugin.options, options);

return this.each(function() {

var obj = $(this);

// the code
});
};

/**
* Default settings(dont change).
* You can globally override these options
* by using $.fn.pluginName.key = 'value';
**/
$.fn.pluginmyPlugin.options = {
name: '',
...
};

})(jQuery, window, document);

更新

所以在查看 jQuery 文档后,我构建了以下代码,请让我知道代码是否有问题,是否可以构建得更好...

;(function($, window, document, undefined){

var methods = {

init : function( options ) {

options = $.extend({}, $.fn.pluginmyPlugin.options, options);

return this.each(function(){

alert('yes i am the main code')

});
},
update : function( ) {
alert('updated')
}
};

$.fn.pluginmyPlugin = 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 this plugin' );
}

};

/**
* Default settings(dont change).
* You can globally override these options
* by using $.fn.pluginName.key = 'value';
**/
$.fn.pluginmyPlugin.options = {
name: 'john doe',
//....
};

})(jQuery, window, document);

最佳答案

替代方案:

var Plugin = function($self, options) {
this.$self = $self;
this.options = $.extend({}, $.fn.plugin.defaults, options);
};

Plugin.prototype.display = function(){
console.debug("Plugin.display");
};

Plugin.prototype.update = function() {
console.debug("Plugin.update");
};

$.fn.plugin = function(option) {
var options = typeof option == "object" && option;

return this.each(function() {
var $this = $(this);
var $plugin = $this.data("plugin");

if(!$plugin) {
$plugin = new Plugin($this, options);
$this.data("plugin", $plugin);
}

if (typeof option == 'string') {
$plugin[option]();
} else {
$plugin.display();
}
});
};

$.fn.plugin.defaults = {
propname: "propdefault"
};

用法:

$("span").plugin({
propname: "propvalue"
});

$("span").plugin("update");

这荒谬地类似于 Twitter Bootstrap's JavaScript template .但是,它并没有完全从那里拿走。我使用 .data() 的历史很长.

不要忘记适本地包装它。

关于javascript - 带有选项和可访问方法的 jQuery 插件模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13777644/

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