Maison > Questions et réponses > le corps du texte
S'il vous plaît, aidez-moi, les éléments générés dynamiquement par jq doivent être liés à des événements de clic pour prendre effet, et la fonction qui s'exécute a également des événements de clic, puis la fonction est exécutée deux fois. Comment résoudre cette situation ?
漂亮男人2017-07-05 10:40:45
Utilisez l'objet événement pour trouver la cible sur laquelle vous souhaitez vraiment cliquer
曾经蜡笔没有小新2017-07-05 10:40:45
En fait, ce n'est rien de plus que l'événement lié deux fois ou l'événement bouillonnant
1 Délier l'événement et le lier à nouveau
$(ele).unbind('click').click(function() {
// to do
})
2, Annuler le bouillonnement
$(ele).click(function(e){
e.stopPropagation();
});
某草草2017-07-05 10:40:45
Supprimez d'abord la surveillance, puis surveillez
.off(handler).on(handler)
过去多啦不再A梦2017-07-05 10:40:45
function removeMaopao(ev){
var eEvent = ev || event;
eEvent.stopPropagation() && eEvent.stopPropagation;
return false;
}
天蓬老师2017-07-05 10:40:45
La personne ci-dessus a été plus claire.
1. Problème trouvé
1.1 est lié deux fois, car l'élément généré dynamiquement est lié à un événement, mais dans cet événement, l'événement précédemment lié est à nouveau appelé
$('document').unbind('click').click(function() {
//取消绑定的回调事件
})
1.2 Elle est toujours causée par le bouillonnement d'événements (si vous n'êtes pas familier avec le bouillonnement, veuillez d'abord lire les informations pertinentes)
$('document').click(function(e){
//取消事件冒泡
e.stopPropagation();
});
2. Les éléments générés dynamiquement ne doivent pas nécessairement utiliser des événements de liaison dynamique
Les gestionnaires d'événements utilisant la méthode délégué() fonctionnent sur les éléments actuels ou futurs (tels que les nouveaux éléments créés par des scripts).
Cliquez ici pour consulter les documents détaillés : http://www.w3school.com.cn/jq...
$("p").delegate("button","click",function(){
$("p").slideToggle();
});