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

Violín

¿Quizás haya otra forma de agregar clase a cada widget?

0
user1844923 10 dic. 2015 a las 16:18

3 respuestas

La mejor respuesta

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

1
Joe 10 dic. 2015 a las 13:51

.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"); 
});
0
Bob S 10 dic. 2015 a las 13:44

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");
});
0
SerhanKarakaya 10 dic. 2015 a las 13:46