2009-07-13 13 views
1

Ich versuche, ein dynamisches Paginierungssystem für meine Website zu erstellen, und ich habe beschlossen, mit Ajax Callback-Funktion dynamisch die Kommentare anzuzeigen, wenn der Benutzer auf verschiedene Seitenelemente klickt. Also ich Ich gebe den folgenden Code als Beispiel dafür an, wie ich es mache ... Ich würde Sie gerne fragen, ob ich es richtig mache oder ob es ein besserer Weg ist, um es zu tun. Bitte weisen Sie mich in die richtige Richtung :Jquery dynamische Paginierung für Kommentare Expertenmeinung

javascript:

$(document).ready(function(){ 
$(".pages").click(function(){ 
var pageno=$(this).attr("id").slice(4,8);//slicing out numbers from the id i.e "1" from "page1" 
$.get("news.php", { pageno: pageno}, 
    function(data){ 
    $("#comments").html(data); 
    }); 
}); 
}); 

html:

<div> 
<span id="page1" class="pages" >1</span> 
<span id="page2" class="pages" >2</span> 
<span id="page3" class="pages" >3</span> 
</div > 
<div id="comments"> 
</div> 

php:

<div><?php echo $_REQUEST['pageno'];?></div> 
+0

Nur aus Neugier, werden die Paging-Bereiche dynamisch generiert? Wenn ja, wäre es wahrscheinlich besser, die click-Methode auf etwas wie click = "someMethod (" Zu setzen. Das sieht hackisch aus, aber ich bin kein Experte. –

+0

ja die Seitenspannen werden dynamisch generiert ... und ich bin auf der Suche nach mehr Expertenmeinung..danke trotzdem – halocursed

Antwort

1

Ich glaube nicht, das ist nicht vertretbar ist, obwohl ich zwei Gedanken erwähnen würde.

Erstens, ich denke, es ist eine gute Sache, die Click-Handler dynamisch zuweisen, anstatt tatsächlich "click =" in den HTML-Code (das ist das Herz der "progressive Enhancement"). Hover, möchten Sie vielleicht eine andere Art von Selektor verwenden. Das Auffinden einer Gruppe von Elementen nach Klassen ist eine der langsameren Möglichkeiten zum Definieren von Elementen, insbesondere wenn es viele Seiten gibt. Du könntest sie alle in ein Div setzen und $ ("# myDiv span") machen. Das sollte viel schneller sein.

Zweitens scheint die Annahme, dass die Seitennummer immer am vierten Zeichen der Span-ID beginnt, etwas fragil zu sein. Es ist vielleicht besser, die ID selbst als Seitennummer zu definieren.

+0

Danke, ich werde das als eine Genehmigung von dem, was ich tue, nehmen und ich werde Ihren Vorschlag nehmen, um die ID die Seitenzahl von selbst zu machen ... .. vielen Dank .... Sind ihre irgendwelche Fehler Handler, die ich hinzufügen sollte? – halocursed

+0

und ich war "page1" anstelle von "1", weil nach W3c Standards sollten Sie Ihre ID nicht mit Zahlen beginnen. .... – halocursed

1
$(document).ready(function(){ 
    var isWorking = false; 
    $(".pages").click(function(){ 
     if (isWorking) 
     { 
      alert('Please wait for your preceeding request to finish.'); 
      return false; 
     } 
     isWorking = true; 
     var pageno = $(this).text(); 
     $.get("news.php", { pageno: pageno}, 
      function(data){ 
       $("#comments").html(data); 
       isWorking = false; 
      }); 
    }); 
}); 
  1. Es sieht aus wie Sie einfach den Textinhalt der Spanne für die Seitenzahl (siehe .text() ändern) nutzen könnten.

  2. Sie möchten möglicherweise verhindern, dass Benutzer versuchen, zu viele Seiten gleichzeitig zu laden (siehe die Variable isWorking, die verhindern soll, dass Benutzer mehr als 1 Seite gleichzeitig laden).

+0

Danke Ich werde in all Ihre Vorschläge schauen ... Sind ihre irgendwelche Fehler Handler, die ich hinzufügen sollte? – halocursed