jQuery & Oggetti, cercando di fare un leggero widget
-
09-06-2019 - |
Domanda
Cercando di fare un make generico selezionare "controllo" che posso aggiungere dinamicamente elementi, ma sto avendo problemi a trovare le funzioni di lavoro di diritto.
Questo è quello che ho iniziato con.
$select = $("<select></select>");
$select.addOption = function(value,text){
$(this).append($("<option></option>").val(value).text(text));
};
Questo ha funzionato bene da solo, ma in qualsiasi momento $select
è .clone(true)
"ed il addOption()
la funzione è perso.
Questo è il mio approccio oggetto, ma ancora non funziona.
function $selectX() {
return $("<select></select>");
}
$selectX.prototype.addOption() = function(value,text){
$(this).append($("<option></option>").val(value).text(text));
};
Trucco soluzione è quella di aggiungere la funzione manualmente dopo la creazione:
$nameSelect= new $selectX;
$nameSelect.addOption = function(value,text){
$(this).append($("<option></option>").val(value).text(text));
};
Sto abbaiare contro l'albero sbagliato?
Soluzione
Per aggiungere un nuovo metodo per jQuery È necessario utilizzare jQuery.fn.methodName
attributo, quindi in questo caso sarà:
jQuery.fn.addOption = function (value, text) {
jQuery(this).append(jQuery('<option></option>').val(value).text(text));
};
Ma tenete a mente che questo addOption
sarà accessibile dal risultato di qualsiasi $()
chiamata.