2011-11-22 18 views
8

favor, eche un vistazo al ejemplo: http://jsfiddle.net/HHDpK/1/

Como se puede ver la diferencia entre dos selectores es sólo la línea

$("#chooser-1 .y").removeAttr("selected"); 

Pero como resultado, sus estados son diferentes (especialmente en Chrome). ¿Me falta algo, o es un error?

Respuesta

5

Parece el error interno de jQuery con atributos.

Tenga en cuenta que en las versiones anteriores, antes de .prop() se introdujo en la versión 1.6, es works as expected.

En las versiones más recientes, sólo tiene que utilizar .prop() para hacer frente a este tipo de propiedades de los elementos:

$("#chooser-1 .x").prop("selected", "selected"); 
$("#chooser-1 .y").removeProp("selected"); 

jsFiddle update.

Más que eso - utilizando .removeProp("selected") en el elemento seleccionado previamente con prop() hará que la selección original regrese en lugar de tener nada seleccionado - comportamiento ideal.

+0

Gracias, de hecho, decidí usar 'prop' en mi código. – Maxim

+1

Aunque funcionará, pero prop() no se establece el atributo seleccionado en el elemento de opción html, así que estoy usando los dos como este {.removeProp ('selected'). RemoveAttr ('selected')} y {.prop (' seleccionado ',' seleccionado '). attr (' seleccionado ',' seleccionado ')} – QMaster

2

Encontré que la respuesta anterior también falló, tuve que configurar el apuntalamiento en falso para que no aparecieran los elementos seleccionados.

$("#chooser-1 .x").prop("selected", false); 

removeProp causar efectos no deseados tales como no ser capaz de volver a seleccionar las opciones de nuevo.

Yo uso jquery 1.6.2

Cuestiones relacionadas