Heim Web-Frontend js-Tutorial So lösen Sie das Problem, dass das Hinzufügen untergeordneter Knoten immer wiederholt wird, wenn zTree asynchron geladen wird

So lösen Sie das Problem, dass das Hinzufügen untergeordneter Knoten immer wiederholt wird, wenn zTree asynchron geladen wird

Mar 15, 2018 pm 04:20 PM
添加 节点

Dieses Mal zeige ich Ihnen, wie Sie das Problem lösen können, dass das Hinzufügen von untergeordneten Knoten immer wiederholt wird, wenn zTree asynchron geladen wird. Was sind? die Vorsichtsmaßnahmen? Das Folgende ist ein praktischer Fall.

zTree ist ein multifunktionales „Baum-Plug-in“, das von jQuery implementiert wird. In diesem Artikel werde ich das Duplizierungsproblem beim Hinzufügen untergeordneter Knoten beim asynchronen Laden von jQuery zTree erläutern. Freunde, die es benötigen, können darauf verweisen

Einführung in zTree

zTree ist ein multifunktionales „Baum-Plug-in“, das mit jQuery implementiert wird. Hervorragende Leistung, flexible Konfiguration und Kombination mehrerer Funktionen sind die größten Vorteile von zTree.

zTree ist Open Source und freie Software (MIT-Lizenz). Wenn Sie sich für zTree interessieren oder die Weiterentwicklung von zTree finanzieren möchten, können Sie eine Spende tätigen.

  • zTree v3.0 unterteilt den Kerncode nach Funktionen. Unnötiger Code muss nicht geladen werden

  • Übernimmt Lazy-Loading-Technologie. Zehntausende Knoten können problemlos geladen werden, selbst unter IE6 kann grundsätzlich ein sofortiges Töten erreicht werden

  • Kompatibel mit IE, Firefox, Chrome, Opera, Safari und anderen Browsern

  • Unterstützt JSON-Daten

  • Unterstützt statisches und asynchrones Ajax-Laden von Knotendaten

  • Unterstützt alle Skin-/ Benutzerdefiniertes Symbol (verlassen Sie sich auf CSS)

  • Unterstützt eine äußerst flexible Kontrollkästchen- oder Optionsauswahlfunktion

  • Bietet eine Vielzahl von Ereignissen Antwortrückrufe

  • Flexible Bearbeitungsfunktionen (Hinzufügen/Löschen/Ändern/Überprüfen), Sie können Knoten nach Belieben ziehen und ablegen, und Sie können mehrere Knoten per Drag & Drop ziehen

  • Auf einer Seite können mehrere Tree-Instanzen gleichzeitig generiert werden

  • Einfache Parameterkonfiguration, um flexible und veränderbare Funktionen zu erreichen

Ursprüngliche Frage

//添加结点, 产品和版本
function addNode(event) {
  rMenu.css({ "visibility": "hidden" });
  var treeNode = zTree.getSelectedNodes()[0];
  var pid;
  var nodeName;
  var treelevel;
  if (!treeNode && event.target.tagName.toLowerCase() != "button" && $(event.target).parents("a").length == 0) {
   //添加产品结点
pid = 0;
   treeNode = null;
   treelevel = 1;
  } else if (treeNode) {
   //添加版本结点
pid = treeNode.id;
  treelevel = 2;
  }
  $.post(
   "AddNode.action",
   { type: treelevel, id: pid },
   function(nodeIdAndName) {
    var params = /([^\|]+)\|([^\|]+)/.exec(nodeIdAndName);
    if (!((!treeNode && event.target.tagName.toLowerCase() != "button" && $(event.target).parents("a").length == 0) || treeNode.open)) {
     zTree.expandNode(treeNode, true);
    }
    treeNode = zTree.addNodes(treeNode, { id: params[1], pid: pid, isParent: "true", name: params[2], editable: "true", treelevel: treelevel });
   });
}
Nach dem Login kopieren

Als ich ursprünglich untergeordnete Knoten direkt hinzugefügt habe und der übergeordnete Knoten nicht erweitert wurde, würden zwei identische untergeordnete Knoten hinzugefügt (die Zum ersten Mal überprüfte ich, ob der übergeordnete Knoten erweitert wurde, aber es stellte sich heraus, dass beim Erweitern des übergeordneten Knotens zwei identische untergeordnete Knoten hinzugefügt wurden (wie kann dieses Problem gelöst werden)?

Methode 1

Ändern Sie die Frage

if (!((!treeNode && event.target.tagName.toLowerCase() != "button" && $(event.target).parents("a").length == 0) || treeNode.open)) {
     zTree.expandNode(treeNode, true);
    }
    treeNode = zTree.addNodes(treeNode, { id: params[1], pid: pid, isParent: "true", name: params[2], editable: "true", treelevel: treelevel });
Nach dem Login kopieren

in

if(!treeNode && event.target.tagName.toLowerCase() != "button" && $(event.target).parents("a").length == 0)
    {
     treeNode = zTree.addNodes(treeNode, { id: params[1], pid: pid, isParent: "true", name: params[2], editable: "true", treelevel: treelevel });
    }
    else if(treeNode.open)
    {
     if(treeNode.isParent)
     {
      zTree.reAsyncChildNodes(treeNode, "refresh");
     }
     else
     {
      treeNode.isParent=true;
      zTree.reAsyncChildNodes(treeNode, "refresh");
     }
    }
    else
    {
     zTree.expandNode(treeNode, true);
     treeNode = zTree.addNodes(treeNode, { id: params[1], pid: pid, isParent: "true", name: params[2], editable: "true", treelevel: treelevel });
    }
Nach dem Login kopieren

. Gelöst, aber wurde es optimiert? Ich habe das Gefühl, dass es nach der Änderung zu viele Codekategorien gibt

Der beste Weg

Es scheint nicht so problematisch zu sein, oder? ? Ich habe vor zwei Tagen eine ähnliche Frage beantwortet.

1. Nachdem Sie zum Hinzufügen eines untergeordneten Knotens geklickt haben, senden Sie Ajax direkt in den Hintergrund, um die Daten zu speichern und das Erfolgsereignis zu erfassen.

2. Wenn Ajax erfolgreich ist, können Sie treeNode.zAsync verwenden Attribut, um zu wissen, ob der übergeordnete Knoten asynchron geladen wurde. Wenn es falsch ist, wird reAsyncChildNodes direkt aktualisiert. Wenn es wahr ist, verwenden Sie addN...

if ((!treeNode && event.target.tagName.toLowerCase() != "button" && $(event.target).parents("a").length == 0) || treeNode.zAsync) 
     treeNode = zTree.addNodes(treeNode, { id: params[1], pid: pid, isParent: "true", name: params[2], editable: "true", treelevel: treelevel });
    else
     zTree.reAsyncChildNodes(treeNode, "refresh");
Nach dem Login kopieren

Ich glaube, Sie haben den Fall in diesem Artikel gelesen. Nachdem Sie die Methode gemeistert haben, achten Sie bitte auf andere verwandte Artikel auf der chinesischen PHP-Website, um weitere spannende Inhalte zu erhalten!

Empfohlene Lektüre:

So entdecken Sie versteckte Elemente im Leerraum

So erreichen Sie eine nicht aktualisierungsfreie Verknüpfung von Drop-Down-Boxen mit Ajax

Ausführliche Erklärung für keine neue Konstruktion

jQuery-Implementierung der Drop-Down-Menünavigation

Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem, dass das Hinzufügen untergeordneter Knoten immer wiederholt wird, wenn zTree asynchron geladen wird. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So fügen Sie einen Fernseher zu Mijia hinzu So fügen Sie einen Fernseher zu Mijia hinzu Mar 25, 2024 pm 05:00 PM

Viele Benutzer bevorzugen im modernen Leben zunehmend das elektronische Ökosystem der Xiaomi-Smart-Home-Vernetzung. Nach der Verbindung mit der Mijia-APP können Sie die angeschlossenen Geräte problemlos mit Ihrem Mobiltelefon steuern. Viele Benutzer wissen jedoch immer noch nicht, wie sie Xiaomi hinzufügen können Wenn Sie die App zu Hause verwenden, erfahren Sie in diesem Tutorial die spezifischen Verbindungsmethoden und -schritte, in der Hoffnung, allen Bedürftigen zu helfen. 1. Nachdem Sie die Xiaomi-App heruntergeladen haben, erstellen Sie ein Xiaomi-Konto oder melden Sie sich an. 2. Methode zum Hinzufügen: Nachdem das neue Gerät eingeschaltet ist, bringen Sie das Telefon in die Nähe des Geräts und schalten Sie den Xiaomi-Fernseher ein. Unter normalen Umständen wird eine Verbindungsaufforderung angezeigt. Wählen Sie „OK“, um den Geräteverbindungsvorgang zu starten. Wenn keine Aufforderung erscheint, können Sie das Gerät auch manuell hinzufügen. Die Methode ist: Klicken Sie nach dem Aufrufen der Smart Home-App auf die 1. Schaltfläche unten links

Tutorial zum Hinzufügen einer neuen Festplatte in Win11 Tutorial zum Hinzufügen einer neuen Festplatte in Win11 Jan 05, 2024 am 09:39 AM

Wenn wir einen Computer kaufen, entscheiden wir uns möglicherweise nicht unbedingt für eine große Festplatte. Wenn wir zu diesem Zeitpunkt eine neue Festplatte zu win11 hinzufügen möchten, können wir zuerst die neue Festplatte installieren, die wir gekauft haben, und dann Partitionen zum Computer hinzufügen. Anleitung zum Hinzufügen einer neuen Festplatte in Win11: 1. Zuerst zerlegen wir den Host und finden den Steckplatz der Festplatte. 2. Nachdem wir es gefunden haben, schließen wir zunächst das „Datenkabel“ an, das normalerweise eine narrensichere Konstruktion hat. Wenn es nicht eingeführt werden kann, kehren Sie einfach die Richtung um. 3. Anschließend stecken Sie die neue Festplatte in den Festplattenschacht. 4. Verbinden Sie nach dem Einstecken das andere Ende des Datenkabels mit der Hauptplatine des Computers. 5. Nachdem die Installation abgeschlossen ist, können Sie es wieder in den Host einsetzen und einschalten. 6. Nach dem Booten klicken wir mit der rechten Maustaste auf „Dieser Computer“ und öffnen „Computerverwaltung“. 7. Klicken Sie nach dem Öffnen in der unteren linken Ecke auf „Datenträgerverwaltung“. 8. Dann können Sie rechts klicken

Tutorial zum schnellen Erstellen von Desktop-Verknüpfungen in Win11 Tutorial zum schnellen Erstellen von Desktop-Verknüpfungen in Win11 Dec 27, 2023 pm 04:29 PM

In Win11 können wir Software oder Dateien schnell auf dem Desktop starten, indem wir Desktop-Verknüpfungen hinzufügen, und wir müssen zum Betrieb nur mit der rechten Maustaste auf die erforderlichen Dateien klicken. Fügen Sie in Win11 eine Desktop-Verknüpfung hinzu: 1. Öffnen Sie „Dieser PC“ und suchen Sie die Datei oder Software, zu der Sie eine Desktop-Verknüpfung hinzufügen möchten. 2. Nachdem Sie es gefunden haben, klicken Sie mit der rechten Maustaste, um es auszuwählen, und klicken Sie auf „Weitere Optionen anzeigen“. 3. Wählen Sie dann „Senden an“ – „Desktop-Verknüpfung“. 4. Nachdem der Vorgang abgeschlossen ist, finden Sie die Verknüpfung auf dem Desktop.

Wie verbinde ich mich mit dem Polygon-Netzwerk in der MetaMask-Wallet? Tutorial-Anleitung zum Verbinden der MetaMask-Wallet mit dem Polygon-Netzwerk Wie verbinde ich mich mit dem Polygon-Netzwerk in der MetaMask-Wallet? Tutorial-Anleitung zum Verbinden der MetaMask-Wallet mit dem Polygon-Netzwerk Jan 19, 2024 pm 04:36 PM

So fügen Sie ein PolygonMainnet-Netzwerk hinzu. Um MATIC (Polygon) mit Metamask zu verwenden, müssen Sie ein privates Netzwerk namens „PolygonMainnet“ hinzufügen. Die Übertragung mit der falschen Netzwerkadresse kann zu Problemen führen. Stellen Sie daher sicher, dass Sie das Netzwerk „PolygonMainnet“ verwenden, bevor Sie von $MATIC übertragen. Das Metamask-Wallet ist standardmäßig mit dem Ethereum-Mainnet verbunden, aber wir können einfach „PolygonMainnet“ hinzufügen und $MATIC verwenden. Nur ein paar einfache Schritte zum Kopieren und Einfügen, und schon sind Sie fertig. Klicken Sie zunächst im Metamask-Wallet auf die Netzwerkoption in der oberen rechten Ecke und wählen Sie „C

Wie füge ich Bildern in Vue Wasserzeichen hinzu? Wie füge ich Bildern in Vue Wasserzeichen hinzu? Aug 19, 2023 pm 12:37 PM

Wie füge ich Bildern in Vue Wasserzeichen hinzu? Vue ist ein beliebtes JavaScript-Framework, das häufig zum Erstellen von Webanwendungen verwendet wird. Manchmal müssen wir Bildern in Vue-Anwendungen Wasserzeichen hinzufügen, um das Urheberrecht der Bilder zu schützen oder die Erkennbarkeit der Bilder zu erhöhen. In diesem Artikel stelle ich Ihnen eine Methode zum Hinzufügen von Wasserzeichen zu Bildern in Vue vor und stelle entsprechende Codebeispiele bereit. Der erste Schritt besteht darin, eine Drittanbieterbibliothek zum Hinzufügen von Wasserzeichen zu Vue einzuführen. Es wird empfohlen, Watermarkj zu verwenden

Mar 18, 2024 pm 12:10 PM

Die Chrome-Erweiterung von Tampermonkey ist ein Plug-in zur Benutzerskriptverwaltung, das die Benutzereffizienz und das Surferlebnis durch Skripte verbessert. Wie fügt Tampermonkey neue Skripte hinzu? Wie lösche ich das Skript? Lassen Sie sich vom Editor unten die Antwort geben! So fügen Sie ein neues Skript zu Tampermonkey hinzu: 1. Öffnen Sie die GreasyFork-Webseite und geben Sie das Skript ein, dem Sie folgen möchten. 2. Wählen Sie ein Skript aus. Nachdem Sie die Skriptseite aufgerufen haben, wird die Schaltfläche zum Installieren dieses Skripts angezeigt. 3. Klicken Sie auf „Dieses Skript installieren“, um zur Installationsoberfläche zu gelangen. Klicken Sie einfach hier, um zu installieren. 4. Wir können die installierte Datei mit einem Klick im Installationsskript sehen.

Outlook bleibt beim Hinzufügen eines Kontos hängen [Behoben] Outlook bleibt beim Hinzufügen eines Kontos hängen [Behoben] Mar 23, 2024 pm 12:21 PM

Wenn beim Hinzufügen von Konten in Outlook Probleme auftreten, können Sie die folgenden Lösungen ausprobieren, um das Problem zu beheben. Normalerweise kann dies durch eine fehlerhafte Netzwerkverbindung, beschädigte Benutzerprofile oder andere vorübergehende Probleme verursacht werden. Mit den in diesem Artikel bereitgestellten Methoden können Sie diese Probleme leicht lösen und sicherstellen, dass Ihr Outlook normal ausgeführt werden kann. Outlook bleibt beim Hinzufügen eines Kontos hängen Wenn Ihr Outlook beim Hinzufügen eines Kontos hängen bleibt, verwenden Sie die unten aufgeführten Korrekturen: Trennen Sie die Internetverbindung und stellen Sie sie wieder her. Deaktivieren Sie die Antivirensoftware vorübergehend. Erstellen Sie ein neues Outlook-Profil. Versuchen Sie, ein Konto im abgesicherten Modus hinzuzufügen. Deaktivieren Sie IPv6. Führen Sie die Reparatur des Microsoft Support and Recovery Assistant aus Office-Anwendung Outlook-Konto hinzufügen erforderlich

Wie fügt der kleine MetaMask-Fuchs das BSC-Netzwerk im Jahr 2023 hinzu? (2023 neueste Version von MetaMask Little Fox fügt BSC-Netzwerk-Tutorial hinzu) Wie fügt der kleine MetaMask-Fuchs das BSC-Netzwerk im Jahr 2023 hinzu? (2023 neueste Version von MetaMask Little Fox fügt BSC-Netzwerk-Tutorial hinzu) Jan 19, 2024 pm 05:39 PM

Das BSC-Netzwerk ist eine leistungsstarke Blockchain, die von der Kryptowährungsbörse Binance entwickelt wurde. Der vollständige englische Name lautet Binance Smart Chain. Die BSC-Blockchain ist mit dem EVM-Netzwerk kompatibel und kann daher über die MetaMask-Wallet aufgerufen und interagiert werden. Wie fügt das Little Fox Wallet das BSC-Netzwerk hinzu? Schauen wir uns das unten mit dem Herausgeber an. 1. MetaMask fügt das BSC-Netzwerk direkt hinzu. Öffnen Sie zunächst das MetaMask-Wallet, klicken Sie auf den Avatar in der oberen rechten Ecke – Einstellungen – Netzwerk und klicken Sie auf die Schaltfläche „Netzwerk hinzufügen“, um die Netzwerkeinstellungsseite des Little Fox Wallet aufzurufen Metamask verfügt über integrierte beliebte Blockchain-Netzwerke, einschließlich einer intelligenten Währungskette. Wir müssen nur BNBSmartCha bestellen

See all articles