5 Stimmen

Wie kann ein jQuery-Plugin neu geladen/aktualisiert werden, um seine Werte zu aktualisieren?

Ich glaube, dass dies einfach zu erreichen ist, aber ich kann nicht herausfinden, wie es geht. Ist es möglich, ein jQuery-Plugin neu zu laden, ohne die gesamte Seite neu zu laden, damit es seine Werte aktualisieren kann? Ich habe ähnliche Fragen gelesen, aber sie beziehen sich auf spezifische Plugins. Ich würde gerne wissen, ob jemand einen "generischen" Weg kennt, um dies zu erreichen, damit es in vielen JQ-Plugins verwendet werden kann.

Wie auch immer, spezieller gefragt, stelle ich diese Frage, um jQuery File Tree neu zu laden. Ich habe das hier:

JavaScript

$(document).ready( function() {
    $('#fileTree').fileTree({
        root: '/some/path/to/somewhere/',
        script: 'js/jqueryFileTree-1.01/connectors/jqueryFileTree.php',
        folderEvent: 'click',
        expandSpeed: 1000,
        collapseSpeed: 1000,
        multiFolder: false,
        loadMessage: 'Wird geladen...'
        }, function(file) {
            relativePath=file.replace("/some/path","");
            aFunction(relativePath, file);
        });
    });

HTML

An einem bestimmten Punkt habe ich AJAX+PHP-Code, der es mir ermöglicht, die ausgewählte Datei zu löschen. Das funktioniert gut! ABER die gelöschte Datei wird immer noch im Dateibaum angezeigt. Wenn ich ein window.location.reload() in meinem Erfolgsereignis in dieser Funktion hinzufüge, wird natürlich die gesamte Seite neu geladen und mein Baum zeigt die tatsächlichen Dateien im Ordner wie beabsichtigt an.

Frage: Gibt es eine Möglichkeit, es neu zu laden, ohne die gesamte Seite zu aktualisieren?

Bitte beachten Sie, dass der Autor dieses Plugins mir auf Twitter gesagt hat:

@metafaniel Das Problem ist, dass es in keinem unserer Projekte mehr verwendet wird. Es ist ein altes, altes Skript, das überholt werden muss. via @abeautifulsite

@metafaniel Du musst das selbst hinzufügen. Da das Plugin sehr alt ist, hat es keine vollständige API. via @abeautifulsite

Ich habe keine Zeit mehr, meinen Code mit einem anderen Plugin neu zu schreiben, ich muss es auf diese Weise fertigstellen.

1voto

TARKUS Punkte 2036

Nun, wenn der OP nach einem direkten Plugin-Befehl fragt, um dies zu tun, befürchte ich, dass es möglicherweise nicht existiert. Hier ist meine Lösung, die ziemlich gut funktioniert. Was Sie tun, ist, Ihr leeres

in ein Elterndiv einzubinden, so etwas wie das hier:

Dann, in Ihrem Javascript, kurz bevor Sie Ihr Plugin instanziieren, löschen Sie den Inhalt des Elterndivs und schreiben dann das Zieltdiv innerhalb des Elterndivs neu, so:

        $('#file-tree-holder').html('');
        $('#file-tree-holder').html('');
        $('#jstree').fileTree({
            script: '/ajax/file_tree2/' + path,
            multiFolder: true,
            expandSpeed: 250,
            collapseSpeed: 250,
            loadMessage: 'Ladevorgang...'
        });

...und es funktioniert ziemlich gut.

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