2 Stimmen

Zeigen Sie ein div nach der Ausführung von jquery .each() nicht funktioniert

Ich versuche, ein Select-All-Skript mit benutzerdefinierten Kontrollkästchen zu tun, und was passiert, ist, dass die Ergebnisnummer aktualisiert wird, aber es zeigt die Zählung, weil jedes Kontrollkästchen das Formular einreicht, um die genaue Ergebnisnummer zu erhalten. jedoch, wenn das Select-All zu tun, die das Klick-Ereignis initiieren wird, zeigt es die Anzahl, die fortschreitet, und ich möchte, dass es nur zeigt, sobald das .each-Ereignis erledigt ist. mit dem aktuellen Code wird es nicht die zweite Funktion ausführen, um das div wieder zu zeigen, hier ist mein Code für es jede Hilfe wäre groß:

$('.select_all').live('click',function(){
    $('#psf_search_results_number').hide();
    $('.psf_grp_content input[name="type[]"]').each(function(){
        $(this).click();
    });
    return false;
},function(){
    $('#psf_search_results_number').show();
});

2voto

jfriend00 Punkte 632952

Zunächst einmal, .live() wurde veraltet und Sie sollten jetzt .delegate() (vor jQuery 1.7) oder .on() (für jQuery 1.7+).

Zweitens, .live() nimmt keine zwei Funktionsargumente entgegen, so dass es kein Wunder ist, dass die zweite Funktion nie aufgerufen wird.

Wenn Sie nur die zweite Funktion, die nach der .each() Schleife abgeschlossen ist, können Sie dies auf diese Weise tun, indem Sie .on() :

$(document.body).on('click','.select_all', function(){
    $('#psf_search_results_number').hide();
    $('.psf_grp_content input[name="type[]"]').each(function(){
        $(this).click();
    });
    $('#psf_search_results_number').show();
    return false;
});

Wenn wir Ihr HTML sehen könnten, ein übergeordnetes Objekt, das für alle .select_all Elemente wäre besser als die Verwendung von document.body aber es wird so funktionieren, wie ich es gezeigt habe.

1voto

Nicola Peluchetti Punkte 74314

Ich denke, das sollten Sie tun (aber ich lese nur in Gedanken, weil mir nicht ganz klar ist, was Ihr Problem ist):

$('.select_all').live('click',function(){
    $('#psf_search_results_number').hide();
    $('.psf_grp_content input[name="type[]"]').each(function(){
        $(this).click();
    });
    $('#psf_search_results_number').show();
    return false;
});

können Sie nicht zwei Funktionen an live() , wenn Sie Folgendes ausführen möchten show() nach dem each() setzen Sie es einfach dahinter

1voto

.live( events, data, handler )

Veranstaltungen Eine Zeichenfolge, die einen JavaScript-Ereignistyp enthält, z. B. "Klick" oder "Tastendruck". Ab jQuery 1.4 kann die Zeichenfolge mehrere durch Leerzeichen getrennte Ereignistypen oder benutzerdefinierte Ereignisnamen enthalten.

Daten Eine Karte mit Daten, die an den Event-Handler übergeben werden.

Handler Eine Funktion, die zum Zeitpunkt der Auslösung des Ereignisses ausgeführt wird.

.live() benötigt keine zwei Funktionsargumente

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X