Пытаюсь сделать общий выбор «control», в который я могу динамически добавлять элементы, но у меня возникают проблемы с правильной работой функций.
Это то, с чего я начал.
$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));
};
Я лаю не на то дерево?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Чтобы добавить новый метод в jQuery, вам необходимо использовать атрибут jQuery.fn.methodName, поэтому в этом случае он будет:
jQuery.fn.addOption = function (value, text) {
jQuery(this).append(jQuery('<option></option>').val(value).text(text));
};
Но имейте в виду, что этот addOption будет доступен в результате любого вызова $().