Estoy tratando de averiguar si esto es un error o estoy haciendo algo mal: agregando una nueva clase al selector de widgets selectmenu
$(".select-cls").selectmenu()
.selectmenu( "widget" ).addClass("red-cls");
Solo seleccione el primero.
También probé el selector por separado como este:
$(".select-cls").selectmenu("widget").addClass("red-cls");
Obteniendo los mismos resultados
¿Quizás haya otra forma de agregar clase a cada widget?
3 respuestas
El siguiente código espera a que esté listo el DOM. Eso podría no ser necesario. Algunos métodos jquery solo funcionan en un elemento. Este código recorre todos los componentes y agrega la clase.
var selects = $(".select-cls").selectmenu({
width: 75
});
// ready
$(function() {
$.each(selects, function(i, element) {
$(element).selectmenu('widget').addClass('red-cls');
});
});
http://jsfiddle.net/9qkvfm1n/10/
No es un error. La API dice que devuelve un único elemento jQuery.
También puede lograr esto en solo CSS:
.select-cls + .ui-selectmenu-button {
color: red;
}
Uso de Selectores de hermanos adyacentes
.selectmenu (arg) parece devolver solo un objeto.
Simplemente itera sobre todas las coincidencias de jquery, p. al igual que:
$(".select-cls").each(function(i,m) {
$(m).selectmenu("widget").addClass("red-cls");
});
Pruebe este javascript, que debería funcionar para usted. Debe agregarlos todos seleccionando cada uno. No puede agregarlos con un selector de clase.
$(".select-cls").each(function(i, elem){
$(elem).selectmenu({
width: 75
}).selectmenu("widget").addClass("red-cls");
});
Preguntas relacionadas
Nuevas preguntas
javascript
Para preguntas sobre la programación en ECMAScript (JavaScript / JS) y sus diversos dialectos / implementaciones (excepto ActionScript). Incluya todas las etiquetas relevantes en su pregunta; por ejemplo, [node.js], [jquery], [json], etc.