Я пытаюсь настроить плагин 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 обновляется, settings.hintText по-прежнему ссылается на переданную исходную настройкупри создании экземпляра плагина - что имеет смысл.
Итак, как бы вы изменили мой метод updateHintText (), чтобы settings.hintText возвращал новый параметр? Прямо сейчас я сделал обходной путь, чтобы создатьновая переменная, которая будет содержать новое значение настройки, и изменила метод show_dropdown_hint (), чтобы использовать эту новую переменную вместо settings.hintText, если она не пуста.Я бы предпочел просто использовать объект настроек.
Спасибо.