Home >Web Front-end >JS Tutorial >jquery.simple.tree plug-in A simpler and more compatible infinite tree plug-in_jquery

jquery.simple.tree plug-in A simpler and more compatible infinite tree plug-in_jquery

WBOY
WBOYOriginal
2016-05-16 18:20:291138browse

The effect is as follows:

Select:
jquery.simple.tree plug-in A simpler and more compatible infinite tree plug-in_jquery
Drag:
jquery.simple.tree plug-in A simpler and more compatible infinite tree plug-in_jquery
jquery.simple.tree. Official website address: http://news.kg/wp -content/uploads/tree/ (seems like it can no longer be opened), but because the operation is relatively simple, we will use it for now.
As mentioned before, the jquery EasyUI Tree plug-in is simple and easy to use, but it still has many shortcomings after testing.
 For example:
 1. There is a problem with AJAX compatible with IE8.
2. If the asynchronous return data is slow, it may cause loading failure.
3. We only use the Tree function, but its size is really huge. ...
What we need is good compatibility, asynchronous, and small size (there are really few scenarios where Tree is used, so dedicated code files are better.)
Okay, let's start jquery.simple .tree journey:
First, load the files, three in total: CSS, Jquery main file, and its own js file;
Then, the code that defines Tree;
Finally, write The root node HTML code of this tree;
The front-end code is as follows:

Copy code The code is as follows:




Region selection</ title> <br><link rel="stylesheet" href="/js/simpletree/jquery.simple.tree.css" /> <br><script type="text/javascript" src="/js /jquery1.4.2.min.js"></script> <br><script type="text/javascript" src="/js/simpletree/jquery.simple.tree.js"></ script> <br><script type="text/javascript"> <br>var simpleTreeCollection; <br>$(document).ready(function(){ <br>simpleTreeCollection = $('.simpleTree'). simpleTree({ <br>autoclose: true, <br>afterClick:function(node){ <br>alert("You selected:" $('span:first',node).text() "id is:" $('span:first',node).attr("id").substr(2));//Why ".substr(2)" is needed here is for special reasons, which can be explained later. If You only need to get the text, you don't need to get the ID here. <br>}, <br>afterDblClick:function(node){ <br>//alert("text-" $('span:first',node).text());//Double-click event<br>} , <br>afterMove:function(destination, source, pos){ <br>//alert("destination-" destination.attr('id') " source-" source.attr('id') " pos-" pos);//Drag event<br>}, <br>afterAjax:function() <br>{ <br>//alert('Loaded'); <br>}, <br>animate:true <br>//,docToFolderConvert:true <br>}); <br>}); <br></script> <br></head> <br><body> <br><ul class= "simpleTree"> <br><li class="root"><span>Region selection</span> <br><ul> <br><li id="root0" class=" open"><span>China</span> <br><ul class="ajax"> <br><li id='0'>{url:/common/GetGroupHtmlByPid.ashx? pid=0}</li> <br></ul> <br></li> <br></ul> <br></li> <br></ul> <br></body> <br></html> <br> </div> <br>Backend response code: <br>GetGroupHtmlByPid.ashx.cs <br><div class="codetitle"> <span><a style="CURSOR: pointer" data="56490" class="copybut" id="copybut56490" onclick="doCopy('code56490')"><u>Copy code</u></a></span> The code is as follows:</div> <div class="codebody" id="code56490"> <br>public class GetGroupHtmlByPid : IHttpHandler <br>{ <br>GroupManager group; <br>public void ProcessRequest(HttpContext context) <br>{ <br>context.Response.ContentType = "text/plain"; <br>int parentId = -1; <br>int type = 0; <br>string resultStr = string.Empty; <br>if (!context.Request.QueryString["pid"].IsNullOrEmpty()) <br>{ <br>Int32.TryParse(context.Request.QueryString["pid"], out parentId); <br>} <br>if (!context.Request.QueryString["type"].IsNullOrEmpty()) <br>{ <br>Int32.TryParse(context.Request.QueryString["type"], out type); <br>} <br>if (parentId >= 0) <br>{ <br>try <br>{ <br>group = new GroupManager((GroupType)type); <br>var subAg = group.AllGroups.Where(c => c.ParentId == parentId); <br>resultStr = "<ul>"; <br>foreach (Base_group item in subAg) <br>{ <br>resultStr = "<li id="" item.GroupId ""><span id="1_" item.GroupId "">" item.GroupName "</span>";//这里可以解释前台代码为何要.substr(2); <br>resultStr = "<ul class='ajax'><li>{url:/common/GetGroupHtmlByPid.ashx?pid=" item.GroupId "}</li></ul>"; <br>resultStr = "</li>"; <br>} <br>resultStr = "</ul>"; <br>} <br>catch (Exception ex) <br>{ <br>} <br>} <br>context.Response.Write(resultStr); <br>} <br>public bool IsReusable <br>{ <br>get <br>{ <br>return false; <br>} <br>} <br>} <br> </div> <br>后台看起来有点别扭,因为这个插件本身只支持HTML节点加载的,不过网上有人进行扩展了,用了JSON,不过个人感觉这对速度影响实在微乎其微,还是直接封装出HTML代码的。 <br>总结一下jquery.simple.tree插件的优缺点: <br>优点:体积小,兼容性高,可异步,支持拖拽。 <br>缺点:如果初始化的时候就需要异步加载,则需要手动更改它的几行代码。例如我的例子中。 <br>本插件还有一个特别的功能,支持拖拽,可以用于后台维护无限分类,非常方便,有待读者自己去发掘,希望本文能够抛砖引玉,对你有所帮助! <br>源插件下载地址:http://plugins.jquery.com/project/SimpleTree <br>我的修改后的下载地址:<a href="http://xiazai.jb51.net/201009/yuanma/simpletree.rar" target="_blank">simpletree.rar</a> <br>我只修改了2行代码,以便在第一次初始化时就加载异步的内容。</div><div class="nphpQianMsg"><div class="clear"></div></div><div class="nphpQianSheng"><span>Statement:</span><div>The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn</div></div></div><div class="nphpSytBox"><span>Previous article:<a class="dBlack" title="jquery plug-in development notes_jquery" href="https://m.php.cn/faq/21301.html">jquery plug-in development notes_jquery</a></span><span>Next article:<a class="dBlack" title="jquery plug-in development notes_jquery" href="https://m.php.cn/faq/21303.html">jquery plug-in development notes_jquery</a></span></div><div class="nphpSytBox2"><div class="nphpZbktTitle"><h2>Related articles</h2><em><a href="https://m.php.cn/article.html" class="bBlack"><i>See more</i><b></b></a></em><div class="clear"></div></div><ins class="adsbygoogle" style="display:block" data-ad-format="fluid" data-ad-layout-key="-6t+ed+2i-1n-4w" data-ad-client="ca-pub-5902227090019525" data-ad-slot="8966999616"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script><ul class="nphpXgwzList"><li><b></b><a href="https://m.php.cn/faq/1609.html" title="An in-depth analysis of the Bootstrap list group component" class="aBlack">An in-depth analysis of the Bootstrap list group component</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/faq/1640.html" title="Detailed explanation of JavaScript function currying" class="aBlack">Detailed explanation of JavaScript function currying</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/faq/1949.html" title="Complete example of JS password generation and strength detection (with demo source code download)" class="aBlack">Complete example of JS password generation and strength detection (with demo source code download)</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/faq/2248.html" title="Angularjs integrates WeChat UI (weui)" class="aBlack">Angularjs integrates WeChat UI (weui)</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/faq/2351.html" title="How to quickly switch between Traditional Chinese and Simplified Chinese with JavaScript and the trick for websites to support switching between Simplified and Traditional Chinese_javascript skills" class="aBlack">How to quickly switch between Traditional Chinese and Simplified Chinese with JavaScript and the trick for websites to support switching between Simplified and Traditional Chinese_javascript skills</a><div class="clear"></div></li></ul></div></div><ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-5902227090019525" data-ad-slot="5027754603"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script><footer><div class="footer"><div class="footertop"><img src="/static/imghwm/logo.png" alt=""><p>Public welfare online PHP training,Help PHP learners grow quickly!</p></div><div class="footermid"><a href="https://m.php.cn/about/us.html">About us</a><a href="https://m.php.cn/about/disclaimer.html">Disclaimer</a><a href="https://m.php.cn/update/article_0_1.html">Sitemap</a></div><div class="footerbottom"><p> © php.cn All rights reserved </p></div></div></footer><script>isLogin = 0;</script><script type="text/javascript" src="/static/layui/layui.js"></script><script type="text/javascript" src="/static/js/global.js?4.9.47"></script></div><script src="https://vdse.bdstatic.com//search-video.v1.min.js"></script><link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css' type='text/css' media='all'/><script type='text/javascript' src='/static/js/viewer.min.js?1'></script><script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script><script>jQuery.fn.wait = function (func, times, interval) { var _times = times || -1, //100次 _interval = interval || 20, //20毫秒每次 _self = this, _selector = this.selector, //选择器 _iIntervalID; //定时器id if( this.length ){ //如果已经获取到了,就直接执行函数 func && func.call(this); } else { _iIntervalID = setInterval(function() { if(!_times) { //是0就退出 clearInterval(_iIntervalID); } _times <= 0 || _times--; //如果是正数就 -- _self = $(_selector); //再次选择 if( _self.length ) { //判断是否取到 func && func.call(_self); clearInterval(_iIntervalID); } }, _interval); } return this; } $("table.syntaxhighlighter").wait(function() { $('table.syntaxhighlighter').append("<p class='cnblogs_code_footer'><span class='cnblogs_code_footer_icon'></span></p>"); }); $(document).on("click", ".cnblogs_code_footer",function(){ $(this).parents('table.syntaxhighlighter').css('display','inline-table');$(this).hide(); }); $('.nphpQianCont').viewer({navbar:true,title:false,toolbar:false,movable:false,viewed:function(){$('img').click(function(){$('.viewer-close').trigger('click');});}}); </script></body></html>