jQuery-bind-Falle funktioniert nicht bei allen
Ich Tat, was ich konnte, um Sie geschehen, aber ohne Erfolg.
Das problem ist, dass ich ein element erstellen zur Laufzeit binden Sie dann eine Funktion auf das element, wie im folgenden Codebeispiel:
$(document).ready(function() {
$('.rem').click(function() {
$("body").append('<a id="runtime" href="javascript:void(0);">runtime</a>');
});
$('#runtime').bind('click', func_name());
});
//End of doc
function func_name() {
alert('I got it!');
}
In den HTML-code habe ich ein label, wie unten:
<div id="body">
<label class="rem">click me</label>
</div>
Mein zweiter Versuch
$(document).ready(function() {
$('.rem').click(function() {
$("body").append('<a id="runtime" href="javascript:void(0);">runtime</a>');
});
$('#runtime').bind('click',function() {
alert($(this).text());
});
});
//End of doc
HTML-code:
<div id="body">
<label class="rem">click me</label>
</div>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ändern
zu
oder (wie von jQuery 1.7):
Zwei Dinge zu beachten:
func_name()
zufunc_name
. Sie wollen nicht nennen die Funktion beim binden der hf - Sie wollen einfach nur zu verweisen.bind
wird nicht tun Sie etwas gutes, weil#runtime
existiert nicht erst, nachdem Sie geklickt haben.rem
. Das ist, warum Sie benötigen entwederlive
oderon
(je nach jQuery version).Und nur für eine gute Maßnahme: hier eine gute Referenz, auf, warum Sie verwenden sollten
jQuery.on
sowieso.Sie nicht wollen, dass die Funktion an der Stelle im code, so entfernen Sie die
()
:Wenn Sie mit jQuery 1.7+, jedoch sollten Sie entweder
.auf()
:oder verwenden Sie eine
.klicken Sie auf()
handler direkt:versuchen, diese
Da Sie die Bindung des Objekts, bevor es erstellt wurde, werden Sie nicht immer das gewünschte Ergebnis.