mostrar - obtener atributo data javascript
jQuery crea opciones de lista de selección de JSON, ¿no sucede como se anuncia? (3)
¿Cómo es que esto no funciona? (Operando en una lista de selección vacía <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);
}
}
);
}
Pero esto hace:
Reemplazar:
var dropdownList = $("#requestTypes");
Con simple javascript antiguo:
var dropdownList = document.getElementById("requestTypes");
De forma predeterminada, los selectores jQuery devuelven el objeto jQuery. Agregue esto para obtener el elemento DOM devuelto:
var dropdownList = $("#requestTypes")[0];
Para cosas como esta, utilizo el plugin de selección de texotela con su función simple ajaxAddOption.
$("#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]
.