hektor pascal: JQUERY Eventlistener neu initialisieren

Hi Forum,

kann mein einen Eventlistener neu initialisieren lassen? Folgendes Beispiel:

<div id="test">  
  <span>eins</span>  
  <p>+++++</p>  
</div>
$('#test span').click(function(){  
  alert(this);  
  });  
  
$('#test p').click(function(){  
  $(this).parent().append('<span>zwei</span>');  
  });

Bei einem Klick auf das span-Element geht eine Alertbox auf, soweit richtig. Bei einem Klick auf das p-Element wird ein neues span-Element hinzugefügt. Klickt man aber nun auf das neu hinzugefügte span-Element geht keine Alertbox auf. Man müsste also den Eventlistener irgendwie "refreshen", damit der "weiss" das ein Element dazugekommen ist.

$('#test p').click(function(){  
  $(this).parent().append('<span>zwei</span>');  
  // $('#test p').click neu laden ...  
  });

Nur Wie kann man das machen?
Hektor

  1. Die Lösung ist:

    $('#test span').live('click',function(){  
      alert(this);  
      });
    

    Hektor

    1. Die Lösung ist:

      $('#test span').live('click',function(){

      alert(this);
        });

        
      Nein, [live()](http://api.jquery.com/live/) ist nicht die Lösung, die Lösung ist [on()](http://api.jquery.com/on/):  
        
      ~~~javascript
      $(document).on(  
        'click',  
        '#test span',  
        function(){  
          alert(this);  
        }  
      ); 
      

      Ein Blick in die Doku hätte dir das verraten.

      1. Nein, live() ist nicht die Lösung, die Lösung ist on()

        Was ist das Problem an live() ?

        1. Nein, live() ist nicht die Lösung, die Lösung ist on()

          Was ist das Problem an live() ?

          Lies bitte einfach die Dokumentation :)

          1. Lies bitte einfach die Dokumentation :)

            Das würde ich durchaus gerne tun, leider ist mein Englisch nicht so perfekt das ich mir 200 Zeilen Text durchlesen kann von dem ich aber nur die Hälfte verstehe und ich nicht weiß worauf du eigentlich hinaus willst :|.

            1. Hi,

              Lies bitte einfach die Dokumentation :)
              Das würde ich durchaus gerne tun, leider ist mein Englisch nicht so perfekt das ich mir 200 Zeilen Text durchlesen kann von dem ich aber nur die Hälfte verstehe und ich nicht weiß worauf du eigentlich hinaus willst :|.

              die erste Zeile der Dokumentation von .live() genügt:

              "As of jQuery 1.7, the .live() method is deprecated. Use .on() to attach event handlers."

              Cheatah

              --
              X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
              X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
              X-Will-Answer-Email: No
              X-Please-Search-Archive-First: Absolutely Yes
              1. "As of jQuery 1.7, the .live() method is deprecated. Use .on() to attach event handlers."

                Verdammt, ich war in der .on()-doku.

                Vielen Dank, Hektor