2010-09-19 1 views
1

Tenir compte this code:Est-ce possible de forcer l'exécution de .click() pour tous les éléments, même ceux qui sont en dessous?

HTML:

<div class='a'>a</div> 
<div class='b'>b</div> 
<div id='log'></div> 

CSS:

.a, .b { 
    width: 100px; 
    height: 100px; 
    border: 1px solid black; 
    position: absolute; 
    text-align: right; 
} 
.a { 
    left: 100px; 
    top: 100px; 
} 
.b { 
    left: 150px; 
    top: 150px; 
} 

JS:

$('*').click(function(e) { 
    log(this.nodeName + ' ' + this.className); 
}); 

function log(s) { 
    $('#log').append(s + '<br />'); 
} 

Si l'intersection est cliqué, .click() pour .a n'est pas appelé.

Y at-il une méthode intégrée pour forcer l'exécution de click() pour tous les éléments, et pas seulement le supérieur et ses parents, ou je dois implémenter cela moi-même?

Répondre

1

Je pense que le comportement que vous observez est correct. Lorsque vous cliquez sur l'élément le plus haut, celui ci-dessous n'obtiendra pas un événement de clic malgré qu'il semble qu'il est dans la zone "cliqué". Pour contourner ce problème, vous pouvez déclencher manuellement l'événement click: $('.a').click().

L'appel click sans arguments est équivalent à trigger('click') qui déclenche l'événement spécifié. Vous pouvez trouver plus d'informations dans le trigger help topic.

+0

J'espérais trouver une solution intégrée (je pensais l'avoir vu quelque part, mais je ne me souviens pas où). Merci quand même ! –

Questions connexes