JQuery & Objects, пытаясь сделать легкий виджет
Пытаясь сделать make generic, выберите "элемент управления", к которому я могу динамически добавлять элементы, но у меня возникают проблемы с получением функций для правильной работы.
Это то, с чего я начал.
$select = $("<select></select>");
$select.addOption = function(value,text){
$(this).append($("<option></option>").val(value).text(text));
};
Это работало нормально в одиночку, но в любое время $select
является .clone(true)
'редактировал addOption()
функция потеряна.
Это мой объектный подход, но функция не работает.
function $selectX() {
return $("<select></select>");
}
$selectX.prototype.addOption() = function(value,text){
$(this).append($("<option></option>").val(value).text(text));
};
Решение проблемы состоит в том, чтобы добавить функцию вручную после создания:
$nameSelect= new $selectX;
$nameSelect.addOption = function(value,text){
$(this).append($("<option></option>").val(value).text(text));
};
Я лаю не на том дереве?
1 ответ
Чтобы добавить новый метод в JQuery Вам необходимо использовать jQuery.fn.methodName
атрибут, так что в этом случае это будет:
jQuery.fn.addOption = function (value, text) {
jQuery(this).append(jQuery('<option></option>').val(value).text(text));
};
Но имейте в виду, что это addOption
будет доступен из результата любого $()
вызов.
В этой ссылке вы найдете пример кода для плагина, который будет автоматически создавать виджеты. Вы можете настроить его в соответствии с вашими потребностями.