die Bindung an click-Ereignis - Ereignis wird nur ausgelöst, sobald
Ich bin mit jquery zu paginieren eine HTML-Tabelle.
Ich habe 2 CSS-Klassen, aPage und thePage,
eine javascript-Funktion erstellt, die Paginierung string,
und jquery-code zu binden, jede "Seite" der klicken Sie auf Ereignis, so dass die Paginierung string berechnet wird, wenn die Seite angeklickt wird.
Mein problem ist, dass das click-Ereignis wird nur ausgelöst, einmal, wenn ich es will, um das Feuer jedes mal, wenn eine Seite angeklickt wird.
Jede Hilfe wird sehr geschätzt.
Danke!!
Meine javascript - /jquery-code ist:
var thisPage=1; npages=10;
//initial pagination
$("#pag").html(showPag(thisPage,npages));
// bind pagination string to click event
$(".aPage").click(function(event){
var thisPage=$(this).text()
$("#pag").html(showPag(thisPage,npages));
});
//function that returns pagination string
function showPag(thisPage,npages) {
p="";
for(i=1;i<=10;i++){
if(i==thisPage) {
p+="<span class='thePage'>"+i+"</span>"
}
else {p+="<span class='aPage'>"+i+"</span>" }
}
return p;
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
live zum binden des click-Ereignisses
Da Sie die Zerstörung der alten
.aPage
link jedes mal, wenn Sie anrufen.html()
müssen Sie entweder verwenden.live()
oder.delegate()
Mit
.live()
Mit
.delegate()
Müssen Sie entweder binden Sie das click-Ereignis für die Spannweiten, die Sie repopuplate die Seite mit oder Sie können einfach verwenden Sie entweder jQuery oder delegieren live-Funktion. Was geschieht, ist, dass die Art der Bindung die click-Ereignis umfasst nur die vorhandenen Spannweiten mit der Klasse aPage. Live-oder delegieren Sie die Bindung zu bestehenden und zukünftigen:
Gut das click-Ereignis registriert ist, auf Elemente der Klasse .aPage NICHT die #pag element. Wenn Sie dieses element mit der Klasse .aPage ist in Ihrem #pag element (wollte Sie nicht, also bin ich hier nur raten), es ist zerstört, wenn Sie ersetzen den html-Code der Seite. Um dies zu beheben binden Sie den click-handler zu #pag.
Können Sie auch versuchen, die folgenden:
ändern
$(".aPage").click(function(){...})
zu
$(".aPage").live('click',function(){...})
Diese binden für alle gegenwärtigen und ZUKÜNFTIGEN Elemente mit className.
event
variable ist, dann Nein, Sie müssen nicht um es zu spezifizieren, die in die definition der Funktion. (es wird an die Funktion übergeben dennoch...und Sie könnte darauf zugreifen, aber das ist für einen anderen post...)Seit jQuery 1.7, live wird nicht mehr unterstützt, während Delegierten wird empfohlen.