2016-08-02 6 views
1

Ich habe gelernt, dass on() möglicht neue injizierten Elemente zu binden: (‚timecountdown‘)Javascript: Wie man on() Methode mit jedem() benutzt?

$(document).on(eventName, selector, function(){}); 

ich meine maßgeschneiderte timecountdown Funktion für alle $ gilt wollen, wenn Seite geladen wird, die neu abgerufenen Konto gilt auch für . Mein Code ist unten dargestellt:

<html> 
<div class="timecountdown">50seconds</div> 
<div class="timecountdown">20seconds</div> 
<div class="timecountdown">60seconds</div> 
... 
... 
... 
</html> 
<script> 
$(function(){ 
$('.timecountdown').each(function(){ 
    //code to counting down time on each elements using by javascript setInterval() 
    function, which minus one to the residual integer for every seconds. 
    //code to delete old account when time hits zero, then retrieve new accounts 
    via ajax post method  
    $.post("accountupdate.php", {id:id}, function(result){ 
     code to display new <div class="timecountdown">Xseconds</div> account 
    }) 

}) 
</scirpt> 

Ich habe versucht:

$(document).on(each, $('.timecountdown'), function(){ 
code to countdown time, delete and retrieve 
}); 
+0

'.on versuchen können()' bindet einen Event-Handler. Mit welchem ​​Ereignis versuchst du umzugehen? Was ist das gewünschte Verhalten? Die zweite Zeile Ihrer Frage zeigt das korrekte Format für das Binden von delegierten Event-Handlern mit '.on()', aber Ihr Beispielcode ignoriert das vollständig, weil 'each' kein Ereignisname ist und' $ ('timecountdown') 'ist kein Selektor. Meinst du '$ (document) .on ('click', '.timecountdown', function() {/ * something * /});'? (Wo '' click'' ist ein Beispielereignis.) – nnnnnn

+0

@nnnnnn Ich möchte, dass meine angepasste timecountdown-Funktion auf alle $ ('. Timecountdown') angewendet wird, wenn die Seite geladen wird. Dies gilt auch für das neu abgerufene Konto – badbye

+0

'.on() 'macht keinen Sinn dafür. Wenden Sie Ihre Countdown-Funktion direkt auf das neu hinzugefügte Element im '$ .post()' Erfolgshandler an. – nnnnnn

Antwort

0

each ist kein Ereignis Methode, aber es ist mehr als DOM-Elemente für iterieren. on Die Methode wird nur für die Ereignisbehandlung verwendet, sodass Sie sich bei der Verwendung der Methode each nicht um die Ereignisdelegierungsmethode kümmern müssen.

0

jQuery Die Methode each() ist eine generische Iteratorfunktion, mit der man nahtlos über Objekte und Arrays iterieren kann, während die Methode on für die ausgewählten Elemente eine Ereignisbehandlungsfunktion für ein oder mehrere Ereignisse anfügt.

Mai werden Sie dieses

$("body").on({ 
    mouseover: function() { 
      $('.timecountdown').each(function(){ 
       $.post("accountupdate.php", {id:id}, function(result){ 
        code to display new <div class="timecountdown">Xseconds</div> account 
       }); 
      }); 
    } 
});