2008-09-18 3 views
10

Почему это не работает (работает на пустом списке выбора <select id="requestTypes"></select>jQuery создавать варианты выбора из JSON, не так как рекламируются?

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

       } 
      } 
      ); 

     } 

Но это делает:

  • Заменить:

    var dropdownList = $("#requestTypes");

  • С простой старый javascript:

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

ответ

15

$("#requestTypes") возвращает объект JQuery, содержащий все выбранные элементы. Вы пытаетесь вызвать метод add() для отдельного элемента, но вместо этого вы вызываете метод jQuery add(), что делает что-то совсем другое.

Чтобы получить доступ к самому элементу DOM, вам необходимо обработать объект jQuery как массив и получить из него первый элемент, используя $("#requestTypes")[0].

9

По умолчанию JQuery селекторы возвращает объект JQuery. Добавьте это, чтобы получить элемент DOM вернулся:

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

Спасибо! И ты, и Джим были очень полезны! – Codewerks 2008-09-18 18:43:12