2016-03-29 4 views
0

Ich habe eine PHP-Seite, die eine lange Tabelle von Elementen generiert. Eine Spalte listet Aktionen auf, die für jedes Element (Zeile) verfügbar sind, von denen eines "Löschen" ist. Nach dem Löschen des Datensatzes wird die gesamte Seite neu geladen, wobei der obere Teil der Tabelle oben auf dem Bildschirm angezeigt wird. Dies ist jedoch eine Belastung. Wenn ich ein Element weit unten in der Tabelle lösche, möchte ich, dass das Reload dorthin scrollt, wo ich war, so dass es einfach ist, das nächste Element zu löschen. So wie es ist, muss ich manuell mehrere Male nach unten scrollen und finde wo ich war, bevor ich die nächste Zeile löschen kann.Laden einer Seite zum vorherigen Bildlaufpunkt

Wie kann ich eine neue Ladung der Seite automatisch an den Ort, wo ich war, scrollen?

Ich mache das in WordPress, wenn es einen Unterschied macht.

Antwort

0

Die Art, wie ich dies für einen vorherigen Job getan habe, war, den Index des "tr", das die Schaltfläche zum Löschen enthielt, zu speichern und im Sitzungsspeicher zu speichern. Beim Neuladen der Seite habe ich die Indexnummer aus dem Sitzungsspeicher entfernt und bin zu diesem Index gescrollt.

//function to set line index on clicking a table row   
    $("table").eq(2).on('click','tr',function() 
     { 
      var lineNum = $(this).closest("tr").index(); 
      sessionStorage.setItem('lineNumber',lineNum); 
     }); 

    //retrieves line index and scrolls to it 
    var line_Number=parseFloat(sessionStorage.getItem('lineNumber')); 
    $("tr").eq(line_Number)[0].scrollIntoView();  

Wenn ich es jetzt tun, würde ich wahrscheinlich Ajax verwenden und vergessen Sie die Seite neu zu laden und einfach den Inhalt löschen und die Seite verlassen, wo sie, ohne sich um den Index zu kümmern war oder, um es zu scrollen.

+0

@Steve -yeah Ich wusste nichts über Ajax, als ich das tat - ich muss sagen, dass es ein Leckerbissen war. Jetzt würde ich nur eine separate PHP-Seite haben, die die Formularelemente behandelt und die Datenbank geändert hat und die Seite blieb dort, wo sie war, zum Zeitpunkt der Interaktion des Benutzers. Übrigens - ich habe es auch so gemacht und habe eine gemeinsame "delete (value)" -Funktion gehabt, wobei value die ID der gelöschten Taste ist, die gedrückt wurde (und mir deshalb die ID der Zeile gab, die ich löschen musste. Auf diese Weise - seine einzige Funktion, die alle Lösch-Schaltflächen auf der Seite verarbeiten kann - unabhängig von den vorhandenen Daten. – gavgrif

+0

[Gehört vor dem vorherigen Kommentar.] @gavgif Ich mag die Idee, Ajax zu verwenden. Wenn ich eine jQuery .load in In der Tabelle kann ich einen Parameter übergeben, der die Seite anweist, nur die Tabellendaten zu generieren, oder vielleicht könnte ich das .load in das Dokument tun und die ganze Seite reproduzieren lassen.Würde das aber reproduziert, ohne die Bildlaufposition zu ändern? zB und dann lass .load die gesamte Seite in das Dokument bringen 111 würde in der Mitte meines Bildschirms sein oder würde ich an der Spitze der Tabelle sein? Danke für Ihre Eingabe – Steve

+0

schwer zu sagen, ohne Code zu sehen, aber meine Vermutung ist, dass es die ganze Seite neu laden würde Struktur und du würdest deine Position wieder verlieren. Die Art und Weise, wie ich es getan habe, war einfach die Zeile aus der Tabelle zu entfernen (ich habe entweder remove() oder eben .hide() benutzt, um sie aus der Ansicht zu entfernen und hatte eine PHP-Seite, die den Inhalt aus der db löschte - also also die Seite war wirklich nur die Anzeige (und der Inhalt einfach aus der Sicht entfernt) und die db wurde im Hintergrund aktualisiert und das nächste Mal, als es geladen wurde, zeigte die geänderte Struktur. – gavgrif

Verwandte Themen