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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top