Cette question est similaire à my last question about "too much recursion" errors in jQuery, mais impliquant des gestionnaires en ligne. J'ai un élément dans un autre. Les deux ont des gestionnaires d'événements personnalisés avec le même nom. L'élément externe a un gestionnaire traditionnel et l'élément interne a un gestionnaire en direct. Lorsque j'essaie de déclencher l'événement sur l'élément externe, mon navigateur fait une pause pendant un moment, puis une erreur me dit "trop de récursivité".erreur «trop de récursivité» avec les gestionnaires en direct dans jQuery 1.3.2
J'ai lu sur le live handler documentation page que je peux empêcher le bouillonnement d'un gestionnaire en direct en retournant false dans la fonction gestionnaire. Cependant, j'ai essayé cela et cela ne semble pas faire la différence. D'une manière ou d'une autre, la fonction externe semble être appelée de nombreuses fois lorsque j'essaie de l'appeler une seule fois.
Comment puis-je résoudre ce problème? Est-il possible d'avoir des gestionnaires avec le même nom comme ça, ou dois-je trouver des noms différents? Vous pouvez tester le problème en utilisant ce code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
<title>live event handler test</title>
</head>
<body>
<div id="outer">
<div id="inner">
</div>
</div>
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script type="text/javascript">
$("#outer").bind("test", function() {
$("#inner").trigger("test");
});
$("#inner").live("test", function() {
return false;
});
$(function() {
$("#outer").trigger("test");
});
</script>
</body></html>
Joli coffret complet. –