2011-01-05 3 views
0

Ich bin mir nicht sicher, ob ich dieses Problem richtig diagnostiziert habe.Wie bekomme ich jquery, um Elementidentitäten wiederzuverwenden, die korrekt über AJAX geladen wurden?

Ich habe einen jquery Dialog, der einen anderen jquery Dialog auftaucht. Wenn ich den inneren Dialog einmal öffne, scheint alles zu funktionieren. Wenn ich beide Dialoge schließe und sie wieder öffne, funktioniert der "Speichern" -Button im internen Dialog nicht richtig - insbesondere schließt es den Dialog nicht.

Was ich denke, geschieht: Das zweite Mal, wenn der Inhalt für den zweiten Dialog über AJAX unter Verwendung der gleichen DOM-IDs wie das erste Mal neu geladen wird, und wenn jquery versucht, den Dialog es versucht, zu schließen, die „alte zu schließen "Dialog, der nicht mehr existiert (oder zumindest nicht sichtbar ist).

Bin ich richtig? Wenn ja, wie kann man das alte Element vergessen und das neue verwenden?

Wenn Sie wollen, um sich um das Problem zu sehen:

  1. unterwegs http://ibidreview.appspot.com/Teach/Edit?eid=1DemoE&owner=
  2. klicken Sie auf die erste "change Frage" -Taste. Der erste Dialog sollte angezeigt werden.
  3. klicken Sie auf den Pseudo-Link "html". Der zweite Dialog sollte angezeigt werden.
  4. klicken Sie auf "Speichern" im inneren Dialog. Innerer Dialog sollte schließen
  5. klicken Sie auf "ändern" im ersten Dialogfeld. Der erste Dialog sollte geschlossen werden.
  6. Jetzt wiederholen Sie die Schritte 2,3,4 und beachten Sie, dass in Schritt 4 der innere Dialog nicht geschlossen wird.

Ich werde aufhören zu versuchen, dies für eine Weile zu beheben, damit die Schritte gleich funktionieren ... Vielen Dank im Voraus!

+0

Sie gaben uns einen localhost Link ... –

+0

Wie erklären Sie Ereignis Speichern klicken auf? Mit jQuery mit .click()? . – Cesar

+0

Cesar: Taste Erklärung sieht wie folgt aus: $ ("# popDiv_FullTargetInput") Dialog ({ AutoOpen-: false , buttons: { "Speichern": onSave_FullTargetInput} , minWidth: 300 , Breite: 800 }); –

Antwort

1

Werfen Sie einen Blick auf den Ereignishandler live(). Dadurch wird sichergestellt, dass das Element das Ereignis weiterhin auslöst, nachdem es zerstört oder neu erstellt wurde. http://api.jquery.com/live/

Verwendung so etwas wie dieses:

$(button).live('click', function() { 
    $(form).save(); //save the form 
    $(menu).close(); //close the menu 
}); 
+0

Ich bin durch diese Antwort verwirrt. Ich weiß nicht, wie die Schaltfläche, um zu identifizieren, da sie durch jQueryUI wie dieses $ erstellt wird ("# popDiv_FullTargetInput") Dialog ({ AutoOpen-. Falsche , buttons: { "Speicher": onSave_FullTargetInput} , minWidth: 300 , Breite: 800 }); - aber ich werde auf den Live-Event-Handler schauen und sehen, ob ich es knacken kann. –

Verwandte Themen