JQuery создать список выбора вариантов из JSON, не так, как рекламируется? - PullRequest
10 голосов
/ 18 сентября 2008

Почему это не работает (работа с пустым списком выбора <select id="requestTypes"></select>

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

Ответы [ 3 ]

15 голосов
/ 18 сентября 2008

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

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

9 голосов
/ 18 сентября 2008

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

 var dropdownList = $("#requestTypes")[0];
4 голосов
/ 19 сентября 2008

Для подобных вещей я использую плагин для выбора texotela с его простой функцией ajaxAddOption.

...