如何实现一个方法来更新jquery插件中的选项
How to implement a method to update the options in a jquery plugin?
我试图调整一个jquery插件(https://raw.github.com/loopj/jquery-tokeninput/master/src/jquery.tokeninput.js),以添加一个方法,将更新一个特定的默认设置(hintText)。
已经提供了一些方法:
var methods = {
init: function(url_or_data_or_function, options) {
var settings = $.extend({}, DEFAULT_SETTINGS, options || {});
return this.each(function () {
$(this).data("tokenInputObject", new $.TokenList(this, url_or_data_or_function, settings));
});
},
clear: function() {
this.data("tokenInputObject").clear();
return this;
},
add: function(item) {
this.data("tokenInputObject").add(item);
return this;
},
remove: function(item) {
this.data("tokenInputObject").remove(item);
return this;
},
get: function() {
return this.data("tokenInputObject").getTokens();
}
}
我加了这个:
updateHintText: function (hintText) {
DEFAULT_SETTINGS.hintText = hintText;
}
这会更新它,但是,它不会在已经创建的实例上工作。例如,我这样调用这个方法:
$("#textbox1").tokenInput("updateHintText", 'updated hint');
但是当提示下拉框下次显示时,它仍然显示原来的提示:
function show_dropdown_hint () {
if(settings.hintText) {
dropdown.html("<p>"+settings.hintText+"</p>");
show_dropdown();
}
}
所以即使DEFAULT_SETTINGS。hintText得到更新,设置。hintText仍然引用实例化插件时传入的原始设置——这是有意义的。
你如何改变我的updateHintText()方法使设置。hintText会返回新的设置吗?现在,我所做的解决方法是创建一个新变量来保存新的设置值,并修改show_dropdown_hint()方法以使用这个新变量而不是设置。如果非空则为hintttext。但是我更喜欢使用settings对象。
谢谢。
这似乎是因为您附加了默认设置,而不是在init函数中从这行扩展的实际设置哈希值。
var settings = $.extend({}, DEFAULT_SETTINGS, options || {});
问题是这个设置哈希值在你的方法范围之外,所以你无法访问它。
尝试将设置的实例化移到init方法之外,这样您就可以访问它。然后你可以使用你的函数来修改它:
// Additional public (exposed) methods
var settings = {};
var methods = {
init: function(url_or_data_or_function, options) {
settings = $.extend({}, DEFAULT_SETTINGS, options || {});
return this.each(function () {
$(this).data("tokenInputObject", new $.TokenList(this, url_or_data_or_function, settings));
});
},
updateHintText: function (hintText) {
settings.hintText = hintText;
}
//..other methods...
相关文章:
- 如何在Angular2中使用jQuery插件
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- 水平视差滚动从头开始-没有插件(jQuery)
- 什么是最好的表单元素样式库/插件(jQuery)
- 如何在Bootstrap Modal上使用Vue.js渲染插件jQuery(作为工具提示和Switchery)
- 屏蔽输入插件 jquery
- 多选插件 jquery 不适用于 javascript
- 使用验证器插件 Jquery 验证动态输入表单元素
- 如何从网格数据表插件 jQuery 中清除数据
- 插件Jquery Validation的错误消息显示不正确
- Livestamp插件Jquery-如何显示时间
- Youtube跟踪JQuery插件JQuery .tubeplayer.js
- 创建句柄特性的拖放插件- jquery
- 如何使用表排序插件- jquery搜索表中的项
- Ajax文件上传进度没有任何插件Jquery
- 航路点插件Jquery
- 在数据表插件jQuery中设置分页长度
- 如何在OpenUI5/SAPUI5中使用jQuery插件(jQuery验证引擎)
- 时钟插件 jQuery
- jQuery插件'jQuery .shuffle.js'执行排序