以下に、zTree ツリー プラグインを使用して全国の 5 レベルの地域でクリックローディングを実装する例を紹介します。これは優れた参考値であり、皆さんの役に立つことを願っています。
プロジェクト機能では、ユーザーの入力量を減らすために、居住地と現在の居住地を入力する必要があります。ツリープラグインを使用して、全国の5つのレベルの地域を選択し、入力します。入力ボックスに詳細な住所を入力します。ここでは、zTree ツリー プラグインが最初に使用されます。将来の使用と研究のために、関連する記録がここに作成されます。もちろん、実装プロセスでは主要な神の記事を参照することが不可欠であり、実際のニーズに基づいて問題を迅速に解決できます。
ZTreeツリープラグイン公式サイト紹介
zTreeは、jQueryで実装された多機能な「ツリープラグイン」です。 zTree の最大の利点は、優れたパフォーマンス、柔軟な構成、複数の機能の組み合わせです。
zTreeツリープラグイン公式サイトアドレス
http://www.treejs.cn/v3/main.php#_zTreeInfo
機能実装コード
データベースエリアテーブルの基本構造:
regionType 地区级别 path 地区编码 name 地区名称 parentRegion 上级地区
ページ コード:
<!-- 户籍地、现居住地 --> <tr> <td colspan="3"> <p class="form-group"> <label style="display: block;">户籍地</label> <input type="hidden" name="domiciliary" id="domiciliary"> <input type="text" class="form-control" style="width:300px;float:left;" id="domiciliary-text" value="" onclick="showRegion('domiciliary')" placeholder="点击选择地区" maxlength="20" readonly="readonly"> <input type="text" class="form-control" style="width:320px;float:left;" name="domiciliaryAddress" value="" placeholder="详细地址" maxlength="100"> </p> </td> </tr> <tr> <td colspan="3"> <p class="form-group"> <label style="display: block;">现居住地址</label> <input type="hidden" name="bide" id="bide"> <input type="text" class="form-control" style="width:300px;float:left;" id="bide-text" value="" onclick="showRegion('bide')" placeholder="点击选择地区" maxlength="20" readonly="readonly"> <input type="text" class="form-control" style="width:320px;float:left;" name="bideAddress" value="" placeholder="详细地址" maxlength="100"> </p> </td> </tr> <!-- bootstrap 模态框(Modal) --> <p class="modal fade" id="regionModal" tabindex="-1" role="dialog" aria-hidden="true"> <input type="hidden" id="regionModalType" /> <p class="modal-dialog"> <p class="modal-content"> <p class="modal-body"> <!-- zTree 的容器 --> <ul id="treeRegion" class="ztree"></ul> </p> <p class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">取消</button> <button type="button" class="btn btn-primary" onclick="confimRegion()">确认</button> </p> </p> </p> </p>
効果:
jsコード:
$(document).ready(function() { // zTree 参数配置 var setting = { view: { showIcon: false,//是否显示节点的图标 selectedMulti: false //设置是否允许同时选中多个节点。默认值: true。 }, data: { simpleData: { enable: true, //是否采用简单数据模式 (Array)。默认值:false idKey: "path", //节点数据中保存唯一标识的属性名称。 pIdKey: "parentRegion", //节点数据中保存其父节点唯一标识的属性名称。 rootPid: "10000000000000" //用于修正根节点父节点数据,即 pIdKey 指定的属性值。 } }, callback: { // 用于捕获节点被点击的事件回调函数 onClick: function(event, treeId, treeNode, clickFlag) { var treeObj = $.fn.zTree.getZTreeObj(treeId); //根据 treeId 获取 zTree 对象 // 这里判断节点被点击时,如果有已经加载下级节点,则不用请求服务器 if((treeNode.children == null || treeNode.children == "undefined")){ if(!$("#"+treeNode.tId+"_switch").hasClass("center_docu") && !$("#"+treeNode.tId+"_switch").hasClass("bottom_docu")){ // 请求服务器,获得点击地区的下级地区 $.ajax({ type: "get", async: false, url: "tRegion/ajaxArea", data:{ path:treeNode.path }, dataType:"json", success: function(data){ if(data != null && data.length != 0){ //添加新节点 var newNodes = treeObj.addNodes(treeNode, data); $(newNodes).each(function(i,n){ var id = n.tId+"_switch"; if($("#"+id).hasClass("center_docu")){ $("#"+id).removeClass("center_docu"); $("#"+id).addClass("center_close"); } if($("#"+id).hasClass("bottom_docu")){ $("#"+id).removeClass("bottom_docu"); $("#"+id).addClass("bottom_close"); } }); }else{ var id = treeNode.tId+"_switch"; if($("#"+id).hasClass("center_close")){ $("#"+id).removeClass("center_close"); $("#"+id).addClass("center_docu"); } if($("#"+id).hasClass("bottom_close")){ $("#"+id).removeClass("bottom_close"); $("#"+id).addClass("bottom_docu"); } } }, error:function(event, XMLHttpRequest, ajaxOptions, thrownError){ result = true; toastr.error("请求失败!"); } }); } }else{ // 展开当前节点 treeObj.expandNode(treeNode); } } } }; // 显示区域树,加载顶级节点 $.ajax({ type: "get", url: "tRegion/ajaxArea", data: {path:"10000000000000"}, success: function(data, status) { if (status == "success") { // 初始化区域树 $.fn.zTree.init($("#treeRegion"), setting, data); // 获得zTree对象 var treeObj = $.fn.zTree.getZTreeObj("treeRegion"); // 获得初始化的所有节点,即顶级节点 var nodes = treeObj.getNodes(); $(nodes).each(function(i,n){ var id = n.tId+"_switch"; if($("#"+id).hasClass("roots_docu")){ $("#"+id).removeClass("roots_docu"); $("#"+id).addClass("roots_close"); } if($("#"+id).hasClass("center_docu")){ $("#"+id).removeClass("center_docu"); $("#"+id).addClass("center_close"); } if($("#"+id).hasClass("bottom_docu")){ $("#"+id).removeClass("bottom_docu"); $("#"+id).addClass("bottom_close"); } }); } }, error : function() { toastr.error('Error'); }, }); }); function showRegion(type){ // 显示模态框 $('#regionModal').modal('show'); $("#regionModalType").val(type); } // 选择地区确认 function confimRegion(){ var type = $("#regionModalType").val(); var treeObj = $.fn.zTree.getZTreeObj("treeRegion"); var node = treeObj.getSelectedNodes(); //选中节点 var regionType = node[0].regionType; if(Number(regionType) >= 5){ $("#"+type+"-text").val(node[0].name); $("#"+type).val(node[0].path); $('#regionModal').modal('hide'); } }
実装効果:
上記は私が皆さんのためにコンパイルしたものです参考になれば幸いです未来のみんなへ。
関連記事:
jQuery でエッジから跳ね返るアニメーション効果を実現するにはどうすればよいですか?
Vue の検出シーケンスにオブジェクトの新しい属性を追加する方法は何ですか?
Vue が配列またはオブジェクトの変更を検出できない問題を解決するにはどうすればよいですか?
以上がzTree ツリー プラグインで全国の 5 レベルの地域のクリックロードを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

JavaScriptエンジンが内部的にどのように機能するかを理解することは、開発者にとってより効率的なコードの作成とパフォーマンスのボトルネックと最適化戦略の理解に役立つためです。 1)エンジンのワークフローには、3つの段階が含まれます。解析、コンパイル、実行。 2)実行プロセス中、エンジンはインラインキャッシュや非表示クラスなどの動的最適化を実行します。 3)ベストプラクティスには、グローバル変数の避け、ループの最適化、constとletsの使用、閉鎖の過度の使用の回避が含まれます。

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

PythonとJavaScriptには、コミュニティ、ライブラリ、リソースの観点から、独自の利点と短所があります。 1)Pythonコミュニティはフレンドリーで初心者に適していますが、フロントエンドの開発リソースはJavaScriptほど豊富ではありません。 2)Pythonはデータサイエンスおよび機械学習ライブラリで強力ですが、JavaScriptはフロントエンド開発ライブラリとフレームワークで優れています。 3)どちらも豊富な学習リソースを持っていますが、Pythonは公式文書から始めるのに適していますが、JavaScriptはMDNWebDocsにより優れています。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

WebStorm Mac版
便利なJavaScript開発ツール

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境
