Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在初始化后更新jQuery插件设置_Javascript_Jquery_Jquery Plugins - Fatal编程技术网

Javascript 在初始化后更新jQuery插件设置

Javascript 在初始化后更新jQuery插件设置,javascript,jquery,jquery-plugins,Javascript,Jquery,Jquery Plugins,我已经搜索了SO,无法正确更新我的插件。我在init时设置了插件选项,但之后需要更改每个设置的值并重新运行插件。以下是我到目前为止的情况: (函数($){ $.fn.testPlugin=函数(选项){ //默认设置 变量设置=$.extend({ 填充:“0”, 边距:“0” },选项); 返回此。每个(函数(){ $(this.css)({ “padding”:settings.padding, “margin”:settings.margin }); }); } }(jQuery));

我已经搜索了SO,无法正确更新我的插件。我在init时设置了插件选项,但之后需要更改每个设置的值并重新运行插件。以下是我到目前为止的情况:

(函数($){
$.fn.testPlugin=函数(选项){
//默认设置
变量设置=$.extend({
填充:“0”,
边距:“0”
},选项);
返回此。每个(函数(){
$(this.css)({
“padding”:settings.padding,
“margin”:settings.margin
});
});
}
}(jQuery));
//初始化插件
$('#main').testPlugin({
填充:“20px”,
边距:“20px 0”
});
//使用新值更新插件设置,并在单击时更改填充/边距
$(“#更新”)。在('click',function()上{
var newPadding=$('#newPadding').val();
var newMargin=$('#newMargin').val();
log(newPadding、newMargin)
//这就是我被困的地方。
//如何更新插件设置并重新运行?
})
#主{
宽度:300px;
背景:#333;
颜色:#fff;
}

Lorem ipsum虚拟文本


更新
您是否尝试过以与初始化相同的方式运行它

$('#main').testPlugin({
  padding: newPadding,
  margin: newMargin
});

你的插件实际上没有做任何对更新设置有用的事情,如果你想将CSS值重置为其他值,你只需要用其他值再次调用你的插件

如果你确实有一个插件,它使用了一些可以更新的设置,那么你必须创建一些系统,在其中检查第一个参数,并相应地设置设置,等等

这与jQueryUI在更新设置时的工作方式有些接近

(函数($){
$.fn.testPlugin=函数(选项、值){
如果(选项类型==='string'&&value){
这是数据(选项、值);
}否则{
var opts=$.extend({
text:'这是默认文本!'
},选项);
返回此值。每个(函数(){
$(此)。在('单击',函数()上){
console.log($(this.data('text'));
})
}).数据(opts);
}
}
}(jQuery));
/* ------------------------------- */
//初始化插件
$('#main').testPlugin({
文字:“这很好用”
});
//更改设置
$(“#更改”)。在('click',function()上{
$('#main').testPlugin('text','this!');
/*  ----  */
$(this.css('color','red');
$('#main').text('再次单击我!');
});

点击我!




现在更改文本
我想不会:)谢谢!谢谢你的详细解释,+1。