2008-09-07 8 views
7

Essayer de faire un générique sélectionner "contrôle" auquel je peux ajouter dynamiquement des éléments, mais j'ai du mal à faire fonctionner les fonctions correctement.JQuery & Objets, essayant de créer un widget léger

C'est ce que j'ai commencé avec.

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

Cela a bien fonctionné seul, mais en tout temps $select est .clone(true) « é la fonction addOption() est perdue.

Ceci est l'approche de mon objet, mais la fonction ne fonctionne toujours pas.

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

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

solution Hack est d'ajouter la fonction manuellement après la création:

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

Suis-je aboiements le mauvais arbre?

Répondre

7

Pour ajouter une nouvelle méthode pour jQuery Vous devez utiliser l'attribut jQuery.fn.methodName, dans ce cas, il sera:

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

Mais gardez à l'esprit que cette addOption sera accessible à partir du résultat d'un appel $().

Questions connexes