2008-09-18 6 views
10

Comment se fait cela ne fonctionne pas (d'exploitation sur une liste de sélection vide <select id="requestTypes"></select>jQuery créer des options de liste de sélection de JSON, ne se passe pas comme annoncé?

$(function() { 

     $.getJSON("/RequestX/GetRequestTypes/", showRequestTypes); 

    } 
    ); 


    function showRequestTypes(data, textStatus) { 

     $.each(data, 
      function() { 

       var option = new Option(this.RequestTypeName, this.RequestTypeID); 
       // Use Jquery to get select list element 
       var dropdownList = $("#requestTypes"); 

       if ($.browser.msie) { 
        dropdownList.add(option); 
       } 

       else { 

        dropdownList.add(option, null); 

       } 
      } 
      ); 

     } 

Mais cela ne:

  • Remplacer:

    var dropdownList = $("#requestTypes");

  • Avec bon vieux javascript:

    var dropdownList = document.getElementById("requestTypes");

Répondre

15

$("#requestTypes") retourne un objet jQuery qui contient tous les éléments sélectionnés. Vous essayez d'appeler la méthode add() d'un élément individuel, mais vous appelez à la place la méthode add() de l'objet jQuery, qui fait quelque chose de très différent.

Pour accéder à l'élément DOM lui-même, vous devez traiter l'objet jQuery sous la forme d'un tableau et récupérer le premier élément en utilisant $("#requestTypes")[0].

9

Par défaut, les sélecteurs jQuery retour l'objet jQuery. Ajouter ceci pour obtenir l'élément DOM retourné:

var dropdownList = $("#requestTypes")[0]; 
+0

Merci! Vous et Jim avez été très utiles! – Codewerks

Questions connexes