Frage

Ich versuche, ein make generic select „Steuerelement“ zu erstellen, zu dem ich dynamisch Elemente hinzufügen kann, aber ich habe Probleme damit, dass die Funktionen richtig funktionieren.

Damit habe ich angefangen.

$select = $("<select></select>");
$select.addOption = function(value,text){
  $(this).append($("<option></option>").val(value).text(text));
};

Das funktionierte alleine gut, aber jederzeit $select Ist .clone(true)'ed die addOption() Funktion geht verloren.

Dies ist mein Objektansatz, aber die Funktion funktioniert immer noch nicht.

function $selectX() {
  return $("<select></select>");
}

$selectX.prototype.addOption() = function(value,text){
  $(this).append($("<option></option>").val(value).text(text));
};

Die Hack-Lösung besteht darin, die Funktion nach der Erstellung manuell hinzuzufügen:

$nameSelect= new $selectX;
$nameSelect.addOption = function(value,text){
  $(this).append($("<option></option>").val(value).text(text));
};

Bin ich auf dem falschen Weg?

War es hilfreich?

Lösung

Um eine neue Methode zu jQuery hinzuzufügen, müssen Sie verwenden jQuery.fn.methodName Attribut, in diesem Fall also:

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

Aber denken Sie daran addOption wird aus jedem Ergebnis zugänglich sein $() Anruf.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top