Est-ce possible de forcer l'exécution de .cliquez () pour tous les éléments, y compris ceux qui sont en dessous?
-
04-10-2019 - |
Question
ce code :
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 non seulement du haut et de ses parents ou je dois mettre en œuvre moi-même?
La solution
Je pense que le comportement que vous observez est correct. Lorsque vous cliquez sur l'élément supérieur d'une sous n'obtenir un événement de clic malgré il semble qu'il est dans la zone « cliqué ». Pour contourner ce problème, vous pouvez déclencher manuellement événement de clic:
$('.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 déclenchement rubrique d'aide .