Diese Frage ist ähnlich wie my last question about "too much recursion" errors in jQuery, aber beteiligt Live-Handler. Ich habe ein Element in einem anderen. Beide haben benutzerdefinierte Ereignishandler mit dem gleichen Namen. Das äußere Element hat einen traditionellen Handler und das innere Element hat einen Live-Handler. Wenn ich versuche, das Ereignis auf dem äußeren Element auszulösen, hält mein Browser eine Weile an, dann wird ein Fehler angezeigt, der "zu viel Rekursion" sagt."zu viel Rekursion" Fehler mit Live-Handler in jQuery 1.3.2
Ich las auf live handler documentation page, dass ich Blasenbildung eines Live-Handlers verhindern kann, indem Sie innerhalb der Handler-Funktion false zurückgeben. Allerdings habe ich das versucht und es scheint keinen Unterschied zu machen. Wie auch immer, die äußere Funktion scheint irgendwie oft aufgerufen zu werden, wenn ich versuche, sie nur einmal zu nennen.
Wie kann ich das beheben? Ist es möglich, Handler mit dem gleichen Namen zu haben, oder muss ich mir andere Namen einfallen lassen? Sie können das Problem testen diesen Code verwenden:
<!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>
Schöner kompletter Testfall. –