Heim > Artikel > Web-Frontend > Detaillierte Erläuterung der Lösung des Problems des Ersetzens der Live-Methode durch die On-Methode in jquery
Die Elemente, die ich in Zukunft hinzufügen werde, werden mit Ajax gespleißt
Mein On ist so geschrieben
$("td").on("click","a",function(){ alert("Aha!"); });
Dies ist das Tag der Seite
<td><a class="topic_a" href="#creat" name='${data.context }'>选择</a></td>
Ajax-Splicing-Tag ist genau das gleiche wie das obige Tag.
Aber ein Klick auf mein gespleißtes Tag hat keine Wirkung.
Warum?
Bitte stellen Sie sicher, dass, wenn Sie on zum Binden verwenden, td bereits im Dom vorhanden ist.
Außerdem...warum Live sein kann, weil Live jederzeit an das Dokument gebunden ist Dokumentalles existiert..
Das von Ihnen verwendete Ereignis ist an td gebunden. Wenn td nicht existiert, wird es definitiv nicht gebunden
Bitte lernen Weitere Informationen zum Ereignisdelegierungsmechanismus.
Ersetzen Sie ihn durch „delegate“
Werden die in Zukunft hinzugefügten Elemente b6c5a531a458a2e790c1fd6421739d1c enthalten?
Wenn b6c5a531a458a2e790c1fd6421739d1c enthalten ist, kann der Ereignis-Proxy nicht an $("td") gebunden werden.
Der Ereignis-Proxy sollte an ein übergeordnetes Element gebunden werden
Zum Beispiel f5d188ed2c074f8b944552db028f98a1 oder das übergeordnete Element von f5d188ed2c074f8b944552db028f98a1 kann auch
durchgeführt werden, z. B.
$("body").on("click","a",function(){ alert("Aha!"); });Beim Binden verwenden.
Fügen Sie es zuerst zusammen, fügen Sie es dann der Seite hinzu und binden Sie dann das Ereignis.
In js wird es auch Zeile für Zeile gelesen.
Das Bindungsereignis wird vorne geschrieben, und das später hinzugefügte td wird dieses Ereignis natürlich nicht haben.
Stellen Sie außerdem sicher, dass td auf die Seite geschrieben wurde.
jquery verfügbar. Die On-Methode kann nur vorhandene Tags auf der Seite verwenden. Wenn Sie zukünftige Elemente abrufen möchten, können Sie dies tun Verwenden Sie nur die Delegate-Methode. Die spezifische Schreibmethode lautet wie folgt:
//div是页面已经有的元素,button是js生成的未来元素! $("div").delegate("button","click",function(){ $("p").slideToggle(); });
$(document).on('click', 'td a', function() { alert("Aha!"); });
$("body").delegate("td","click",function(){ alert("ok!"); });Bitte stellen Sie sicher, dass td bereits im Dom vorhanden ist, wenn Sie es mit on binden.
Außerdem ... warum Live verwendet werden kann, weil Live an das Dokument gebunden ist. Das Dokument existiert jederzeit.
Wenn Sie on verwenden, ist Ihr Ereignis an das TD gebunden. Wenn das TD dies tut nicht existiert, wird es definitiv nicht gebunden.
Bitte erfahren Sie mehr über den Ereignis-Proxy-Mechanismus.
$("body").on("click","td a.topic_a",function(){ alert("Aha!"); });Werden die Elemente Zukünftig hinzugefügt: b6c5a531a458a2e790c1fd6421739d1c?
Wenn b6c5a531a458a2e790c1fd6421739d1c enthalten ist, kann der Ereignis-Proxy nicht an $("td") gebunden werden.
Der Ereignis-Proxy sollte an ein übergeordnetes Element gebunden werden
Zum Beispiel f5d188ed2c074f8b944552db028f98a1 oder das übergeordnete Element von f5d188ed2c074f8b944552db028f98a1 Textkörper oder Dokument
wie
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Lösung des Problems des Ersetzens der Live-Methode durch die On-Methode in jquery. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!