jQuery & Objects, пытаясь сделать легкий виджет - PullRequest
8 голосов
/ 07 сентября 2008

Попытка сделать 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 Ответ

7 голосов
/ 07 сентября 2008

Для добавления нового метода в jQuery Вам необходимо использовать атрибут jQuery.fn.methodName, поэтому в этом случае это будет:

jQuery.fn.addOption = function (value, text) {
    jQuery(this).append(jQuery('<option></option>').val(value).text(text));
};

Но имейте в виду, что этот addOption будет доступен по результатам любого $() вызова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...