2014-06-13 59 views
0

从玩弄我可以看到这个代码是否可以在不同的时间设置不同的select2参数?

$("#Selected3").select2({ minimumInputLength: 3 }); 
$("#Selected3").select2({ placeholder: "Show a placeholder" }); 

会告诉我的占位符,但除去minimumInputLength参数值。

有没有人知道一种方式,请这个例子可以修改,使占位符将被添加,而不会失去最小..长度值。

任何答案都需要允许声明在单独文件中的可能性,即一个在页面上,另一个在被引用的.js文件中。

我知道,如果一次设置所有的参数,这将会容易得多,例如,

$("#Selected3").select2({ 
     minimumInputLength: 3, 
     placeholder: "Show a placeholder" 
    }); 

但我在一个目前不允许的框架内工作。

编辑:任何人谁愿意给这个一杆,但不知道选择2库来源于这里Select2 on GitHub

回答

2

我不认为这是可能的调整,而无需重新初始化选择2的选项。你可以存储在一个可变的选项某处,然后调整这是必要的,但为了生效,选择2控制将需要重新初始化:

var options = { minimumInputLength: 3 }; 

// initialize 
$("#select3").select2(options); 

// change options 
options.placeholder="show a placeholder"; 

// need to reinitialize select2 for options to take effect 
$("#select3").select2("destroy").select2(options); 

或者看看这个的jsfiddle和娱乐以防万一吧:http://jsfiddle.net/JjV9m/2/

您还可以更改默认选择2

$.fn.select2.defaults.placeholder = "New placeholder..."; 

请注意,您仍然需要reinitalize现有选择2的情况下,并认为这将采取变更后的每个实例的效果。

+0

感谢您的回应,这似乎可能有潜力,我想后续问题,使它跨多个文件工作将是“你如何阅读以前设置的选项?” – ReiMasuro

+0

@ReiMasuro您可以在私有名称空间中创建变量,以免与其他变量名称发生冲突。例如,创建命名空间:var mynamespace = {};那么你可以在该命名空间中创建一个选项变量,如下所示:mynamespace.options = {minimumInputLength:3}; 如果你想在一个单独的变量中捕获以前的设置,你可以这样做:var oldSettings = $ .extend({},mynamespace.options);然后更新mynamespace.options,oldSettings不会改变。阅读更多关于$ .extend的工作方式@ http://api.jquery.com/jquery.extend/ – deherch

+0

看起来应该覆盖它,谢谢你的帮助。 – ReiMasuro

相关问题