2009-08-08 15 views
0

Ich habe einen Hyperlink mit einer ID, wenn geklickt wird ein bestimmtes Ereignis mit JQuery durchführen. JQuery zeichnet das Vorhandensein dieser Verknüpfung beim Laden von Dokumenten auf. Einige Zeit im Laufe der Benutzer besuchen. Ich entferne diesen Link und füge ihn später wieder hinzu. Dies wird jedoch nicht erneut abgefeuert, wenn auf diese Verknüpfung geklickt wird, nachdem sie entfernt und hinzugefügt wurde.Hinzufügen, Entfernen und Hinzufügen von Element entfernt wieder sein Ereignis

Warum ist der Fall und wie kann ich es beheben? Etwas mit Ereignisbindung zu tun ?? Oder soll ich einfach ein onclick Attribut hinzufügen?

Antwort

3

Sie haben schon einen Tag wie folgt mit dem Click-Ereignis hinzuzufügen:

$('#speciallink').click(function(){ 
    // do something 
    return false; 
}); 

Dieser Wille Binden Sie das Ereignis an die Elemente, die in diesem Moment ausgewählt sind.

Wenn Sie einen Link entfernen und erneut hinzufügen, wird effektiv ein neues Element ohne dieses Ereignis erstellt. Sie können die „live“ Methode verwenden, um Regeln hinzufügen, die Anpassung der Regel auf Ereignisse angewendet werden, auch wenn diese Elemente erstellt, nachdem die Regel zu erstellen:

$('#speciallink').live("click",function(){ 
    // do something 
    return false; 
}); 
+0

+1 dafür, die erste Person zu erwähnen Live-Events –

+0

Vielen Dank! Ich lerne einfach weiter. :) – Abs

1

Entfernen Sie den Link nicht aus dem DOM-Baum. Schalten Sie die Sichtbarkeit stattdessen einfach mit show() und hide() um.

Das Entfernen des Elements aus der DOM-Struktur mit remove() entfernt das Element und alle Event-Handler, auch wenn Sie es mit derselben ID hinzufügen.

1

Sie müssen diesen Event-Handler an das neue Element binden, wenn es hinzugefügt wird, oder Sie können live() statt bind verwenden, um zu erreichen, was Sie brauchen.

Grundsätzlich verweist der Ereignishandler auf das ursprüngliche Element. Wenn dieses Element entfernt wird, obwohl ein neues Element mit derselben ID hinzugefügt wird, handelt es sich um ein anderes Element.

0

Wenn Sie das Element vollständig entfernen, müssen Sie alle Ereignis-Listener erneut an das Element anfügen, wenn Sie es neu erstellen.

Alternativ verstecken nur das Element durch seinen Stil zu Display: keine mit .show() und .hide()

Verwandte Themen