55 votes

Masquer l'option de sélection dans IE à l'aide de jQuery

J'utilise actuellement jQuery pour masquer / afficher les options de sélection à l'aide du code suivant.

 $("#custcol7 option[value=" + sizeValue + "]").hide();
 

Cela fonctionne bien dans Firefox, mais ne fait aucun bien dans les autres navigateurs. Comment masquer les options de sélection dans Chrome, Opera et IE?

44voto

meder Points 81864

Je viens de tomber sur ce lieu et de le clonage de l'ensemble de la sélectionner et plus j'ai juste remplacé les options qui doivent être masqués avec span d'éléments et de cacher les extensions ( si le navigateur n'a pas visuellement leur montrer de toute façon, je crois ) - vous devrez peut-être modifier votre code ( cas complexe ) pour itérer sur les travées pour une logique complexe.

Le magasin s'étend sur une référence à l' option et de remplacer eux-mêmes avec elle quand ils ont besoin d'être démontré.

Ce code peut évidemment être remaniée et embellie.

http://fiddle.jshell.net/FAkEK/12/show/

EDIT #2 ( CELA ): Il m'est apparu qu'au lieu de faire tout ce clone/de référence/de remplacer la merde, juste envelopper l'option avec une durée de cacher la durée, et sur le spectacle il suffit de remplacer la durée avec l'option de nouveau..

http://fiddle.jshell.net/FAkEK/25/show/

31voto

nrodic Points 1454

Je pense que meder a fourni une réponse valable et la voici légèrement modifiée pour refléter ce qui fonctionne pour moi:

 $.fn.optVisible = function( show ) {
    if( show ) {
        this.filter( "span > option" ).unwrap();
    } else {
        this.filter( ":not(span > option)" ).wrap( "<span>" ).parent().hide();
    }
    return this;
}
 

Testé avec (longue vie à BrowserStack):

  • Windows XP: IE 6.0, Firefox 3.0, Safari 4.0, Opera 10.0, Chrome 14.0
  • Windows 8: Métro IE 10.0
  • iOS 3.2 (iPad), iOS 6.0 (iPhone 5)
  • Android 1.6 (Sony Xperia X10)

jsfiddle

11voto

Tatu Ulmanen Points 52098

Ce n'est pas le cas, il n'est pas pris en charge dans IE (et probablement pas dans Chrome ou Opera). Si vous souhaitez qu’elles soient réellement invisibles, vous devez supprimer toutes les options et les rajouter ultérieurement. Mais dans la plupart des cas, un simple disabled="disabled" devrait suffire et est bien plus simple que de gérer la suppression et l'ajout d'options.

10voto

murraybiscuit Points 443

essayez de détacher (). vous pouvez le rattacher plus tard si nécessaire en utilisant append () ou insertAfter ()

3voto

Joseph Silvashy Points 14960

Vient de le supprimer et le stocker dans une variable dans votre JavaScript. Vous pouvez simplement créer le nouvel objet quand vous en aurez besoin plus tard.

Sinon, essayez l'attribut disabled mentionné ci-dessus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X