var _node = null, _all_match = 0, _current_match = 0;
$(document).ready(function() {
$('#area_setting_ou_tree').jstree({
'core' : {
'data' : {
"url" : "url",
"method" : "POST",
"dataType" : "json"
},
"multiple" : false,
"check_callback" : true,
"animation" : 0
},
'plugins': [
"sort",
"search",
"types"
],
'sort' : function(a, b) {
return this.get_type(a) === this.get_type(b) ? (this.get_text(a) > this.get_text(b) ? 1 : -1) : (this.get_type(a) >= this.get_type(b) ? 1 : -1);
},
'search' : {
'search_leaves_only' : true,
'search_callback' : function(string,node){
if(string !== '' && node.type === 'staff' && node.text.toLocaleLowerCase().match(string.toLocaleLowerCase())) {
_instance.open_all();
$('#' + node.id).addClass('jstree-search');
}else {
$('#' + node.id).removeClass('jstree-search');
}
}
},
'types' : {
"staff" : {
"icon" : "url"
},
"ou_end" : {
"icon" : "url"
},
"ou_not_end" : {
"icon" : "url"
}
}
}).on('search.jstree', function() {
var _selected_node = $('#area_setting_ou_tree ul li .jstree-search');
if(_selected_node.length === 0) return; var _instance = $('#area_setting_ou_tree').jstree(true); _all_match = _selected_node.length;
$('#all_selected').text(_all_match);
_current_match = 1;
$('#current_selected').text(_current_match); var node_id = '';
_selected_node.each(function(index, dom) {
node_id = $(this).attr('id');
if(index === 0) {
_instance.select_node(node_id);
$('#' + node_id).addClass('jstree-search');
location.hash = '#' + node_id;
}
_node.add(node_id);
});
}); var _instance = $('#area_setting_ou_tree').jstree(true);
/*
* search event for Tree
*/
var area_setting_ou_tree_to = false;
$('#area_setting_ou_tree_search').keyup(function () {
setTimeout(function() {
_all_match = 0;
_current_match = 0;
$('#current_selected').text(0);
$('#all_selected').text(0);
$('#area_set_main').html('');
_node = null;
_node = new DoubleLinkedList();
var _instance = $('#area_setting_ou_tree').jstree(true);
_instance.deselect_all();
$('#selected_message').css('visibility','visible');
$('#pre_selected').prop('disabled',false);
$('#next_selected').prop('disabled',false); if(area_setting_ou_tree_to) { clearTimeout(area_setting_ou_tree_to); }
area_setting_ou_tree_to = setTimeout(function () {
var company_department_tree_search_val = $('#area_setting_ou_tree_search').val();
$('#area_setting_ou_tree').jstree(true).search(company_department_tree_search_val);
}, 250); if($('#area_setting_ou_tree_search').val() === '') {
$('#selected_message').css('visibility','hidden');
$('#pre_selected').prop('disabled',true);
$('#next_selected').prop('disabled',true);
$('.jstree-search').removeClass('jstree-search');
$('#area_set_main').html('');
}
}, 200);
}); /*
* next step for Tree
*/
$('#next_selected').on('click', function(){
if(_node.size() === 0) return;
var _instance = $('#area_setting_ou_tree').jstree(true); // selected node is not search results
var _current_selected = null;
if(_node.find(_instance.get_selected()[0])) {
_current_selected = _node.find(_instance.get_selected()[0]);
} else {
_current_selected = _node.getHead();
_current_match = 0;
} if(_current_selected.next) {
var _temp = _current_selected.next.element;
_instance.deselect_all();
_instance.select_node(_temp);
location.hash = '#' + _temp;
showInstitutionByClickTree(_instance.get_type(_temp), _temp);
_current_match += 1;
$('#current_selected').text(_current_match);
} else {
//跳转到第一个
_current_match = 1;
var _temp = _node.getHead().next.element;
_instance.deselect_all();
_instance.select_node(_temp);
location.hash = '#' + _temp;
//showInstitutionByClickTree(_instance.get_type(_temp), _temp);
$('#current_selected').text(_current_match);
} });
/*
* previous step for Tree
*/
$('#pre_selected').on('click', function(){
if(_node.size() === 0) return;
var _instance = $('#area_setting_ou_tree').jstree(true); // selected node is not search results
var _current_selected = null;
if(!_node.find(_instance.get_selected()[0])) {
_current_selected = _node.findLast();
_current_match = _node.size();
var _temp = _current_selected.element;
_instance.deselect_all();
_instance.select_node(_temp);
location.hash = '#' + _temp;
showInstitutionByClickTree(_instance.get_type(_temp), _temp);
$('#current_selected').text(_current_match);
return;
} _current_selected = _node.find(_instance.get_selected()[0]);
if(_current_selected.previous != _node.getHead()) {
var _temp = _current_selected.previous.element;
_instance.deselect_all();
_instance.select_node(_temp);
_current_match -= 1;
$('#current_selected').text(_current_match);
} else {
//跳转到最后一个
_current_selected = _node.findLast();
_current_match = _node.size();
var _temp = _current_selected.element;
_instance.deselect_all();
_instance.select_node(_temp);
$('#current_selected').text(_current_match);
}
});
});

双链表

 function Node(element){
this.element = element;
this.next = null;
this.previous = null;
} function DoubleLinkedList(){
this._head = new Node("This is Head Node.");
this._size = 0;
} DoubleLinkedList.prototype.getHead = function(){
return this._head;
}; DoubleLinkedList.prototype.isEmpty = function(){
return this._size === 0;
}; DoubleLinkedList.prototype.size = function(){
return this._size;
}; DoubleLinkedList.prototype.findLast = function(){
var currNode = this.getHead();
while(currNode.next){
currNode = currNode.next;
}
return currNode;
}; DoubleLinkedList.prototype.add = function(item){
if(item == null)
return null;
this.insert(item);
}; DoubleLinkedList.prototype.remove = function(item){
if(item) {
var node = this.find(item);
if(node == null)
return ;
if (node.next === null) {
node.previous.next = null;
node.previous = null;
} else{
node.previous.next = node.next;
node.next.previous = node.previous;
node.next = null;
node.previous = null;
}
this._size--;
}
}; DoubleLinkedList.prototype.find = function(item){
if(item == null)
return null;
var currNode = this.getHead();
while(currNode && currNode.element !== item){
currNode = currNode.next;
}
return currNode;
}; DoubleLinkedList.prototype.insert = function(newElement, item){
var newNode = new Node(newElement);
var finder = item ? this.find(item) : null;
if(!finder){
var last = this.findLast();
newNode.previous = last;
last.next = newNode;
}
else{
newNode.next = finder.next;
newNode.previous = finder;
finder.next.previous = newNode;
finder.next = newNode;
}
this._size++;
}; DoubleLinkedList.prototype.dispReverse = function(){
var currNode = this.findLast();
while(currNode != this.getHead()){
console.log(currNode.element);
currNode = currNode.previous;
}
}; DoubleLinkedList.prototype.display = function(){
var currNode = this.getHead().next;
while(currNode){
console.log(currNode.element);
currNode = currNode.next;
}
};

jstree:版本号-3.0.9

API地址:https://www.jstree.com/api/

数据:ajax后台生成

数据结构:双链表

jsTree搜索排序向上向下的更多相关文章

  1. 搜索实时个性化模型——基于FTRL和个性化推荐的搜索排序优化

    本文来自网易云社区 作者:穆学锋 简介:传统的搜索个性化做法是定义个性化的标签,将用户和商品通过个性化标签关联起来,在搜索时进行匹配.传统做法的用户特征基本是离线计算获得,不够实时:个性化标签虽然具有 ...

  2. YII关联字段并带搜索排序功能

    1.简介 从接触yii框架到现在已经快有两个月了,但是自己对yii框架的了解程度并不是很深,并没有系统地去学习,仅仅只是在做项目的时候遇到不懂得知识才去翻手册. 在上一个项目中因为需要将关联的表的字段 ...

  3. 重写 final关键字 多态调用子类特有的属性及行为(向上向下转型)

    1.override 重写:在继承中,子类与父类方法名相同,参数列表相同,的方法叫重写,与返回值有关;  主要应用于系统升级. 2.final 关键字: 可修饰:1.类-->被修饰后该类不能被继 ...

  4. 带搜索框的jQuery下拉框插件

    由于下拉框的条数有几十个,于是打算找一个可以搜索查找功能的下拉框,刚开始在网上看了几个,都是有浏览器兼容性问题,后来看到这个“带搜索框的jQuery下拉框美化插件 searchable”,看演示代码简 ...

  5. Atitit.获得向上向下左的右的邻居的方法 软键盘的设计..

    Atitit.获得向上向下左的右的邻居的方法 软键盘的设计.. Left right可以直接使用next prev.. Up down可以使用pix 判断...获得next element的posit ...

  6. 带搜索框的select下拉框

    利用select2制作带有搜索功能的select下拉框 1.引入线上css和js <link href="https://cdnjs.cloudflare.com/ajax/libs/ ...

  7. Object类 任何类都是object类的子类 用object对象接收数组 object类的向上向下转型

    任何类都是object类的子类 用object对象接收数组 object类的向上向下转型

  8. WPF中类似使用tab键功能,可以向上向下定位

    原文:WPF中类似使用tab键功能,可以向上向下定位 private void tbYyrs_KeyUp(object sender, KeyEventArgs e) { UIElement elem ...

  9. 【python】Leetcode每日一题-搜索排序数组2

    [python]Leetcode每日一题-搜索排序数组2 [题目描述] 已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同. 在传递给函数之前,nums 在预先未知的某个下标 k( ...

随机推荐

  1. block的语法

    主要内容: 1. 开始使用block(Getting Started with Blocks) 2. block概念综述(Conceptual Overview) 3. 声明和创建block(Decl ...

  2. bigworld源码分析(5)——BaseApp分析

    BaseApp负载部分,核心代码缺失...网上的源码中都找不到,暂时没办法分析其核心内容,很遗憾,继续寻找吧,等找到了,再继续自己的分析.

  3. 378. Kth Smallest Element in a Sorted Matrix

    Given a n x n matrix where each of the rows and columns are sorted in ascending order, find the kth ...

  4. LintCode First Bad Version

    找出第一个出问题的version. /** * public class SVNRepo { * public static boolean isBadVersion(int k); * } * yo ...

  5. 移动平台对 meta 标签的定义

    一.meta 标签分两大部分:HTTP 标题信息(http-equiv)和页面描述信息(name). 1.http-equiv 属性的 Content-Type 值(显示字符集的设定) 说明:设定页面 ...

  6. import tf

    不知道为什么,tensorflow要最后import,否则会对matplotlib的imread产生影响,产生IO错误,异常莫名其妙

  7. lsm-tree

    https://www.quora.com/How-does-the-Log-Structured-Merge-Tree-work http://blog.cloudera.com/blog/2012 ...

  8. linux项目-之监控-nagios

    nagios core plugins 对象 主机(交换机,路由器,防火墙,服务器,虚拟机等),主机组 服务(主机上提供的服务如80,3306,1521,21等)/资源(cpu,内存使用情况,磁盘,网 ...

  9. maxscript, 批量导出物体

    1,将场景中所有选中物体整体导出为一个fbx文件 exportfile filename #noprompt selectedOnly:true using:FBXEXP 2,将场景中所有选中物体各导 ...

  10. 【python】模块作用域

    作用域 在一个模块中,我们可能会定义很多函数和变量,但有的函数和变量我们希望给别人使用,有的函数和变量我们希望仅仅在模块内部使用.在Python中,是通过_前缀来实现的. 类似_xxx和__xxx这样 ...