2009-06-16 3 views
3

nennen habe ich diesen CodeKann ich die Funktion Ready() wieder in jQuery

$(".insert").click(function(){ 
      $(".insert").ajaxStop(function(){ 
       $(".load").hide(); 
      }); 
      $(".insert").ajaxStart(function(){ 
       $(".load").show(); 
      }); 

      $.ajax({ 
       type: "GET", 
       url: "edit.php", 
       data: "action=add", 
       success: function(msg){ 

        $(".control").append(msg); 
       } 
      }); 


     }); 

, wie Sie dieser Code die HTML-Antwort von edit.php zum .control

das Problem sehen anhängen ist

nach dem HTML-Anhängen .. alle jquery Änderungen werden nicht in sie gelten .. weil die $ (document) .ready() bereits vor diesem HTML-Code genannt wurde geboren wurde ...

kann ich anrufen $ (Dokument) .ready() während ich irgendwelche Änderungen mache ????

+1

Ich möchte den gleichen jquery Code anwenden, der auf der Seite angewendet wurde, wenn ich das DOM der Seite manipuliere. – Sulaiman

Antwort

6

Werfen Sie einen Blick auf jQuery live. Es soll Ereignisse automatisch an neue Elemente binden. Es funktioniert für klicken, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, schlüssel, keypress und keyup.

+0

Es ist ein kleiner technischer Punkt, aber live() bindet keine Ereignisse zurück. – nickf

+0

Danke, nickf. Ich habe meine Formulierung verbessert. –

0

Wenn Sie das ausführen möchten, wenn das Dokument fertig ist, wickeln Sie es in ein, und es wird zum richtigen Zeitpunkt ausgeführt.

Sie können der ready() - Methode von document an mehreren Stellen Regeln hinzufügen.

9

Wenn Sie näher erläutern könnten, was Sie in Ihrer document.ready-Funktion tun, könnte ich Ihnen vielleicht genauere Hilfe geben. Möglicherweise finden Sie, was Sie benötigen, in der live()-Funktion, die das Anwenden von Ereignissen auf Objekte simuliert, selbst wenn sie nach dem Aufruf von live() zum DOM hinzugefügt wurden.

Ihre Frage aber beantworten, ja Sie den Event-Handler nur dies, indem Sie aufrufen können:

$(document).ready(); 
1

Ja, das Aufrufen der Funktion ready mit einem Argument (ob es sich um einen Verweis auf eine Funktion oder eine anonyme Funktion handelt), hängt es an die Kette von Funktionen an, die jQuery für das Ereignis aufruft.

1

Je nach der Struktur der DOM-Manipulation, die Sie gerade ausführen, können Sie Ereignisdelegierung verwenden, um Ereignishandler auf neu erstellte DOM-Elemente anzuwenden.

http://www.danwebb.net/2008/2/8/event-delegation-made-easy-in-jquery

+0

Ich liebe Dan Webbs Sachen, aber er hat LowPro seit Jahren nicht mehr aktualisiert. Und Ereignisdelegierung ist genau das, was mit den "Live" -Ereignissen in jQuery 1.3 gezogen wurde. – Nosredna

2

ich diese Forderung mit off gelöst und wieder ein Ereignis für zB:

 $("div.value").off("click"); 
     $("img.cancelEdit").off("click"); 

     $("div.value").on("click", function (e) { 
      var $this = $(this); 
      $this.hide(); 
      $this.next().show(); 
     }); 

     $("img.cancelEdit").on("click", function (e) { 
      var $this = $(this); 
      $this.parent().hide(); 
      $this.parent().prev().show(); 
     }); 

und Sie können Selector.Live verwenden();

0

Verwenden Sie on() anstelle von live(). Live() hat einige Nachteile und es wird abgeschrieben.

Verwandte Themen