To jest przepływ pracy:

  1. Dynamicznie dodaj elementy do kontenera DIV
  2. Zarejestruj się, kliknij Zdarzenie dla tego elementów (przy użyciu funkcji Custom Custom)
  3. Wyzwalaj zdarzenie elementu

Zgodnie z powyższym przepływem nie mogę uzyskać nowych imprez elementów, ponieważ nigdy nie jest wywołany. To jest mój scenariusz:

http://jsfiddle.net/9ru76/1/

Pomysł polega na tym, że po kliknięciu "Element" należy drukować swój atrybut ID w .log div

Edytować:

Przetestowałem wszystkie odpowiedzi, a wszystkie z nich działają dobrze :)

0
manix 25 sierpień 2012, 01:22

3 odpowiedzi

Najlepsza odpowiedź

W JSFiddle, kod jest automatycznie umieszczony w bloku $(document).ready. Więc, co się dzieje, jest natychmiast uruchomiony? Oznacza to, że jest ustawiony pobiegł przed jQuery.fn.showID.

Również $(".element").showID();​ wiąże zdarzenie do .element s, który istnieje w tym czasie. Nowe elementy nie będą miały związania zdarzeń. Musisz użyć delegacji zdarzeń (co sprawia, że showID wtyczka bezużyteczna) lub zadzwoń {x3}} po dodaniu elementu (upewniając się, aby nie powiązać się ze starymi elementami).

Str.s. W wnętrzu jQuery this jest już obiektem jQuery, nie ma potrzeby używania $(this).

0
Rocket Hazmat 24 sierpień 2012, 21:28

Miałeś $(".element").showID(); poza obudową .create Kliknij, aby wybrać, więc nie miałeś nic do wyboru, również miałeś swój kod w Onload, gdy powinno być w głowicy bez zawijania.

http://jsfiddle.net/9ru76/9/

3
Musa 24 sierpień 2012, 21:44

Możesz użyć delegacji zdarzeń

$(document).ready(function(){

    $(".create").click(function(){
         $(".container").append('<div id="4" href="#" class="element">element</div>');
    });
});


    $(document).on('click','.element', function(){
        $(".log").html("id: " + $(this).attr("id"));
    });
1
sabithpocker 24 sierpień 2012, 21:28