2008-09-18 21 views
10

Bu nasıl olmaz (boş bir seçim listesinde çalışır <select id="requestTypes"></select>jQuery, reklamı yapılan gibi olmayan, JSON'dan seçim listesi seçenekleri oluşturuyor mu?

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

       } 
      } 
      ); 

     } 

Ancak bu:

  • Değiştir:

    var dropdownList = $("#requestTypes");

  • Düz eski javascript ile :

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

cevap

15

$("#requestTypes") seçilen tüm unsurları içeren bir jQuery nesnesi döndürür. Tek bir öğenin add() yöntemini çağırmaya çalışıyorsunuz, ancak bunun yerine jQuery nesnesinin add() yöntemini çağırıyorsunuz, bu çok farklı bir şey yapıyor.

DOM öğesinin kendisine erişmek için, jQuery nesnesini bir dizi olarak ele almanız ve ilk öğeyi $("#requestTypes")[0] kullanarak almanız gerekir.

9

Varsayılan olarak, jQuery seçiciler jQuery nesnesi döndürür. Bu DOM öğesi iade almak için ekleyin:

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

Teşekkürler! Hem sen hem de Jim çok yardımcı oldular! – Codewerks