2010-03-22 7 views
0

J'ai un événement click pour $ ('# blah div'). div contient du texte (pas à l'intérieur d'un div, d'un span, d'un p, etc.) et contient un textarea. La zone de texte déclenche également l'événement, comment puis-je le déclencher uniquement lorsque je clique sur le texte et que j'ignore la zone de texte?jquery ne sélectionnez pas?

+2

est de mettre le texte à l'intérieur d'un span une option pour vous? Je pense que ce serait plus facile. –

Répondre

1

Arrêter la bulle, comme ceci:

$('#blah div').click(function() { 
    alert("Div click"); 
}); 

$('#blah div textarea').click(function(e) { 
    e.stopPropogation(); 
}); 

Ce qu'il dit d'annuler la bulle d'événement lorsque le clic origine dans le <textarea>. Normalement, le clic se produit sur le <textarea> et continue de faire des bulles aux parents et de déclencher leurs gestionnaires de clic ... cela empêche cela.

1

Une alternative à empêcher l'événement de se produire est TRAITEE:

$("#blah div").bind("click", function(e) { 
    if (e.target.type !== "textarea") { 
     alert("Hello."); 
    } 
}); 

Vous pouvez vérifier ce que l'objectif de l'événement était à l'intérieur de votre fonction de gestionnaire d'événements. Cela signifie que vous pouvez effectuer d'autres actions uniquement si la cible est autre que textarea.

+0

autre l'obtient pour stopPropogation. Bien que je pense que je vais utiliser cette solution. –

Questions connexes