style.display='none' ne fonctionne pas sur les balises d'option dans google chrome, mais il le fait dans firefox
ok, voici un exemple de code qui illustre le problème.
si je clique sur le bouton firefox, la première option disparaît.
si je clique sur le bouton dans le navigateur chrome, il ne se passe rien, ou plutôt si je inspecter la première option, il ne l'attribut "style='display:none'", mais l'option elle-même sur la page html n'est pas caché.
<form>
<select>
<option>1</option>
<option>2</option>
<option>3</option>
</select>
<input type="button" onclick="document.getElementsByTagName('option')[0].style.display='none'" value="hide option 1">
</form>
pourquoi ne pas ce travail dans chrome?
- Fonctionne sur Chrome maintenant. C'est à dire est la dernière comme d'habitude, toujours de nous donner des maux de tête inutiles.
Vous devez vous connecter pour publier un commentaire.
La solution est de supprimer le
option
éléments de réponse à votre événement et de les ajouter si et quand ils sont nécessaires. Autant que je me souvienne, c'est à dire ne vous permettra pas de régler ledisplay
ànone
suroption
éléments. Je vous conseille de stocker les éléments supprimés dans un tableau, de sorte que vous pouvez facilement ajouter de nouveau.display:none
à supprimer options dans une liste.display:none
est beaucoup plus rapide que le rattachement de l'ensemble de la liste.Vous avez probablement supprimer la
<option>
au lieu de 'cacher' il. Si ce n'est pas une solution pour vous, essayez de désactiver la fonction.PS: Vous pourriez vouloir reconsidérer l'aide de
getElementsByTagName('option')
, peut être source de confusion si vous avez plus de<select>
éléments.Je me suis vite de travailler, simplement en retirant de son parentNode... évidemment, cela va être un hack.
Je vais essayer de trouver une meilleure solution pour vous =)
En passant, bienvenue à Débordement de Pile
La question est plutôt pourquoi cette œuvre dans n'importe quel navigateur?
Les options ne sont pas utilisés comme éléments dans la page, elles contiennent les informations à afficher dans l'élément select. Certains navigateurs vous permettent d'appliquer des styles pour les options, mais en général, vous ne pouvez pas vraiment s'attendre de la croix-navigateur de soutien pour tous les styles à tous.
Si vous voulez garder une option s'affiche, il vous suffit de le retirer de la sélection.
Pour la suppression d'une option de sélectionner le formulaire peut être utilisé jQuery $().eq().remove() ou $().supprimer().
Similaire a été mon la suppression d'une ligne de tableau de tableau:
où:
dire, qui a supprimé l'élément sera la ligne de la table (tr) à partir du tableau ci-joint de forme (forme de tableau).
dire que enlevée sera le deuxième élément (élément avec le numéro d'index 1)
dire que l'élément sera supprimé.
Mais quand ce devrait être utilisé sur option, puis tout le nécessaire serait (par exemple):
parce que c'est plus simple pour trouver l'option par la valeur que par le numéro d'index (à moins que vous ayez plus de ioption avec la même valeur, mais c'est un non-sens, d'avoir des options). À l'aide de l'indice est bon si vous n'avez pas toute autre chose que vous pouvez utiliser pour trouver de l'élément supprimé.
Aussi, vous pouvez, bien sûr, ajouter un formulaire nom ou le nom du formulaire et sélectionnez un nom (ou un id ou une classe) pour l'élément d'identification
mais la première option est mieux et plus logique, en raison des processus côté serveur, où vous devez utiliser l'attribut nom au lieu id ou classe.
$('select option[value="1"]').remove();
travailleQue ma solution est (asp.net), je vais essayer de le faire de cette façon.
Je sais que c'est vieux maintenant, mais vous pourrait - surtout si vous êtes en utilisant jQuery changement parent.
Solution:
La boîte de sélection changé de taille 2 (multiples), mais de travail.
Cette astuce ne fonctionne pas sous safari 🙁