7
votes

Détecter fond de fond sur jQuery

dise que j'ai le suivant HTML:

$('div').click(function(e) {
  if (e.target.nodeName != "span")
     ...
});


0 commentaires

6 Réponses :


0
votes
$(':not(span)').click(function(){
    //dostuff
})

3 commentaires

Vous rendez-vous compte que cela affectera des gestionnaires d'événements sur un tonne 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.



1
votes

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 xxx


1 commentaires

Cela n'a pas vraiment besoin de changements pour JQuery.



1
votes

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.


0 commentaires

3
votes

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');
        }
    });
});


0 commentaires

0
votes

Utilisation de la propriété tabindex , vous pouvez réellement créer des éléments arbitraires concentrés: xxx

Malheureusement, cet exemple ne fonctionnera probablement pas dans IE. Je ne l'ai pas testé moi-même, donc cela pourrait!

aussi, un tabindex de -1 signifie que l'élément peut être cliqué sur, mais peut 't être concentré avec le clavier. Vous pouvez le changer en 0 si vous souhaitez qu'il soit concentable avec onglet ou Maj + onglet


0 commentaires