dise que j'ai le suivant HTML:
$('div').click(function(e) { if (e.target.nodeName != "span") ... });
6 Réponses :
$(':not(span)').click(function(){ //dostuff })
Vous rendez-vous compte que cela affectera des gestionnaires d'événements sur un tonne i> d'éléments? Loin de l'idéal.
Il a dit qu'il voulait autre chose que la couverture
Mais ensuite, il devrait utiliser des cases d'événement pour des raisons de performance.
Je suis venu avec une solution à ce problème avant que JQuery ait été publié ...
Déterminez si tout autre élément extérieur a été cliqué avec JavaScript p>
Cela n'a pas vraiment besoin de changements pour JQuery.
Si vous retournez FALSE de votre gestionnaire de clic pour la portée, vous empêcherez l'événement de bullementer, ce qui permettra au gestionnaire de click Div. p>
Votre dernière méthode devrait fonctionner mieux même si c'est désordonné. Voici un petit raffinement:
$('span').click(function() { var span = $(this); // Mark the span active somehow (you could use .data() instead) span.addClass('span-active'); $('div').click(function(e) { // If the click was not inside the active span if(!$(e.target).hasClass('span-active')) { span.removeClass('span-active'); // Remove the bind as it will be bound again on the next span click $('div').unbind('click'); } }); });
Utilisation de la propriété Malheureusement, cet exemple ne fonctionnera probablement pas dans IE. Je ne l'ai pas testé moi-même, donc cela pourrait! P> aussi, un tabindex code>, vous pouvez réellement créer des éléments arbitraires concentrés:
tabindex code> de
-1 code> signifie que l'élément peut être cliqué sur, mais peut 't être concentré avec le clavier. Vous pouvez le changer en
0 code> si vous souhaitez qu'il soit concentable avec
onglet code> ou
Maj + onglet p> p> p>
De ce que j'ai recherché, je pense que le stoppropagation une fonction> est la plus appropriée.
Par exemple: voir
0 commentaires