Ajout/suppression d'une option de sélection multiple avec jquery
J'ai jquery qui va ajouter un élément à une liste de sélection et changer la couleur d'arrière-plan pour indiquer qu'il a été ajouté (la liste de sélection n'est pas visible). Lorsque je clique sur le signe plus, il ajoute l'élément à la liste, et les changements de l'arrière-plan vert. Quand je clique une deuxième fois, il supprime l'élément et de la couleur. Cela fonctionne une fois. Si je répète le cycle, il s'arrête de fonctionner. Toutes les idées pourquoi?
<ul>
<li><span id='add'> + </span>this is a test
</li>
</ul>
<select multiple="multiple" id="destination"></select>
$(document).ready(function () {
$("#add").click(function () {
var color = $("#add").css("background-color");
if (color == "transparent") {
$("#add").css("background-color", "green");
$("#destination").append('<option value="1">New option</option>');
} else {
$("#add").css("background-color", "transparent");
$("#destination option[value='1']").remove();
}
});
});
OriginalL'auteur John S | 2013-01-12
Vous devez vous connecter pour publier un commentaire.
Cela dépend du navigateur. Dans l'exemple en Chrome
$("#add").css("background-color")
retournergba(0,0,0,0)
pastransparent
. Ainsi, la lecture d'une couleur d'arrière-plan comme ce n'est pas de la croix-navigateur compatible.En général, je pense que vous pouvez être mieux avec les classes.
http://jsfiddle.net/watRq/
OriginalL'auteur Nucleon
Ne pas vérifier les antécédents, utilisez juste la
.toggle()
event:http://jsbin.com/unojap/4/edit
OriginalL'auteur Roko C. Buljan
Au lieu de vérifier les couleurs d'arrière-plan, l'utilisation jQuery.données pour stocker si un élément a été ajouté ou non:
Démo
OriginalL'auteur Salman A