2008-09-18 5 views
10

Dlaczego to nie działa (działa na pustej liście select <select id="requestTypes"></select>jQuery utworzyć wybierz opcje listy z JSON, nie dzieje się jak w reklamie?

$(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); 

       } 
      } 
      ); 

     } 

Ale to robi:

  • Wymienić:

    var dropdownList = $("#requestTypes");

  • zwykły stary javascript:

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

Odpowiedz

15

$("#requestTypes") zwraca obiekt jQuery, który zawiera wszystkie wybrane elementy. Próbujesz wywołać metodę pojedynczego elementu add(), ale zamiast tego są wywołanie metody obiektu jQuery, która robi coś zupełnie innego add().

Aby uzyskać dostęp do samego elementu DOM, należy traktować obiekt jQuery jako tablicę i pobrać z niego pierwszy element, korzystając z $("#requestTypes")[0].

9

Domyślnie selektorów jQuery zwraca obiekt jQuery. Dodaj do tego, aby uzyskać element DOM zwrócony:

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

Dzięki! Zarówno ty i Jim byli bardzo pomocni! – Codewerks

Powiązane problemy