JQuery создавать варианты выбора списка из JSON, а не как рекламироваться?
Почему это не работает (работает в пустом списке выбора <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");
Ответы
Ответ 1
$("#requestTypes")
возвращает объект jQuery, содержащий все выбранные элементы. Вы пытаетесь вызвать метод add()
для отдельного элемента, но вместо этого вы вызываете метод add()
объекта jQuery, что делает что-то совсем другое.
Чтобы получить доступ к самому элементу DOM, вам нужно обработать объект jQuery как массив и получить из него первый элемент, используя $("#requestTypes")[0]
.
Ответ 2
По умолчанию селекторы jQuery возвращают объект jQuery. Добавьте это, чтобы вернуть элемент DOM:
var dropdownList = $("#requestTypes")[0];
Ответ 3
Для таких вещей я использую texotela select box plugin с его простой функцией ajaxAddOption.