Est-ce possible de forcer l'exécution de .cliquez () pour tous les éléments, y compris ceux qui sont en dessous?

StackOverflow https://stackoverflow.com/questions/3744733

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?

Était-ce utile?

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 .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top