Jquery: încarcă doar următoarea pagină cu primul clic pe "încărcați mai mult ..."

Trebuie să încarc conținutul fiecărui clic al textului "încărcați mai mult" la sfârșit dacă DIV. Codul pe care îl am în prezent este după cum urmează:

<div id="Container"> 
load more

</div>

și

$(".load:last").click(function(){
$(".load:last").load("nextPage.php", function() {
$(this).hide();

$("div#Container").append($(this).html());
$("div#Container").append("
load more...

"); });

Primul clic funcționează, deoarece încarcă mai mult de la următorulPage.php. Cu toate acestea, clicul consecutiv nu declanșează sarcina. ce fac greșit?

0
Nu aveți nevoie de $ ("load: last"), deoarece vă ascundeți sarcina anterioară mai mult para doar a face $ ("load.") Click (function() {...});
adăugat autor Tuscan, sursa
Am încercat asta, dar a fost cu același rezultat. Am încercat, de asemenea, cu: ultima și nici o ascundere (), precum și nu: ultima și folosind "încărcare" ca un id în loc de o clasă, dar nu a făcut nici o diferență
adăugat autor zzz, sursa

3 răspunsuri

    $(".load:last").live('click', function() {
        $(this).remove();
        //Or
       //$(this).hide();
        $(".load:last").load("nextPage.php", function() {
            $("div#Container").append($(this).html());
            $("div#Container").append("
load more...

"); }); });
0
adăugat
utilizați live ......
adăugat autor Thulasiram, sursa
Acest lucru funcționează pentru mine, mulțumită amândurora! Double checked my jQuery și se pare că am folosit 1.6 jQuery, prin urmare, .on() nu a declanșat, dar .live a lucrat.
adăugat autor zzz, sursa
live este depreciat în favoarea on din jQuery 1.7, dacă utilizați 1.4+, utilizați delegate în loc de docs: Începând cu jQuery 1.7, metoda .live() este depreciată. Utilizați .on() pentru a atașa dispozitivele de tratare a evenimentelor. Utilizatorii versiunilor mai vechi ale jQuery ar trebui să folosească .delegate() în preferința .live ().
adăugat autor Andreas Wong, sursa

Încercați să utilizați metoda .live() or.on() a jQuery , aceasta atașează un handler de evenimente pentru toate elementele care se potrivesc selectorului curent, acum și în viitor.

Click here for information and example for .live event in jquery
I hope this will definitely solve you problem.

Mult noroc! :)

0
adăugat
Mulțumesc băieți, acest lucru este foarte util!
adăugat autor zzz, sursa
mulțumită a pune lumina pe acest subiect ... da .live() metoda este depreciată. .on() este în uz
adăugat autor Manish Kumar Namdev, sursa
live este depreciat în favoarea on din jQuery 1.7, dacă utilizați 1.4+, utilizați delegate în loc de docs: Începând cu jQuery 1.7, metoda .live() este depreciată. Utilizați .on() pentru a atașa dispozitivele de tratare a evenimentelor. Utilizatorii versiunilor mai vechi ale jQuery ar trebui să folosească .delegate() în preferința .live ().
adăugat autor Andreas Wong, sursa

Pe măsură ce .load se adaugă de fiecare dată la div # Container ca nou, ar trebui să utilizați un handler de evenimente live la .load

$("div#Container").on('click', '.load', function() {
  $(this).parent('div#Container').load('nextPage.php', function() {
     $('div#Container').append("
load more...

"); }) })
0
adăugat
Nu declanșează nici o sarcină din vreun motiv. Am încercat, de asemenea, cu alertă ("hello") în cadrul handlerului evenimentului on (), dar nu a fost niciodată declanșat când se face clic pe "încărcați mai mult"
adăugat autor zzz, sursa
Ne pare rău că a declanșat evenimentul - nu funcționa deoarece folosesc 1.6 jQuery, așa că a trebuit să utilizeze .live (). Manipulatorul de evenimente nu face exact ceea ce căutam, dar mi-a ajutat să găsesc rezoluția totuși, mulțumesc!
adăugat autor zzz, sursa
JavaScript, România - Moldova
JavaScript, România - Moldova
328 participanți

Comunitatea Română JavaScript: github.com/js-ro Pentru confort, opriți notificările. Parteneri: @node_ro, @php_ro, @python_ro, @seo_ro, @RomaniaGroup, @ai_ro, @Grupuri_IT Offtop: @holywars_ro Joburi: @js_jobs_ro Sponsored with ❤️ by ciupacabra.com