2008-09-18 17 views
10

¿Cómo es que esto no funciona (que opera en una lista de selección vacío <select id="requestTypes"></select>jQuery crea opciones de lista de selección de JSON, ¿no sucede como se anuncia?

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

       } 
      } 
      ); 

     } 

pero esto:

  • Reemplazar:

    var dropdownList = $("#requestTypes");

  • Con el viejo y simple javascript:

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

Respuesta

15

$("#requestTypes") devuelve un objeto jQuery que contiene todos los elementos seleccionados. Está intentando llamar al método add() de un elemento individual, pero en su lugar llama al método add() del objeto jQuery, que hace algo muy diferente.

Para acceder al elemento DOM en sí, debe tratar el objeto jQuery como una matriz y obtener el primer elemento de la misma, usando $("#requestTypes")[0].

9

Por defecto, los selectores de jQuery devolver el objeto jQuery. Añadir esto para conseguir el elemento DOM volvió:

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

Gracias! ¡Tanto tú como Jim fueron muy útiles! – Codewerks

Cuestiones relacionadas