11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour !
J'ai un petit script tout bête :
- deux listes <ul> : je clique sur un <li> d'une liste, si il est déjà présent dans l'autre liste, il ne fait rien. Sinon il y va.
- j'utilise des input:hidden transportant une info d'ID pour les comparer.

Donc je pensais faire ce script :


$("#liste2 li").click(function(){
	ingredient_id = $(this).find("input:hidden").val();
	if($("#liste1 li").has("input[value='"+ingredient_id+"']")){return false;}
	else{
	//Copie vers l'autre liste
	}
});


Le problème c'est qu'il considère la condition toujours vérifiée, du coup il ne fait jamais rien.
Monitoré sous FireBug, il ne renvoie jamais un false à la condition, mais un '[ ]' quand l'ingredient_id n'est pas trouvé.

Comment puis-je lui dire que si le résultat est '[ ]' alors il doit exécuter le "else" ?
Ou comment reformuler la condition pour qu'elle soit correctement comprise ?

Merci pour vos conseils !
Arf c'est bon.
J'ai transformé la condition en :
if($("#liste2 input[value='"+ingredient_id+"']").length>0)


Souvent, il suffit de formuler son problème sur un forum pour trouver la solution Smiley cligne
Désolé pour le dérangement.