<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script src="jquery.js" type="text/javascript"></script>
</head>
<body>
<h2>无限级 select demo2</h2> <div id="demo2" style="width:360px; padding:5px; border:3px solid #000; float:left"> </div>
<input type="text" id="txt_value" />
<input type="text" id="txt_text" />
</body>
</html>
<script type="text/javascript">
_doc = document;
var Doc = {};
Doc.Create = function (tagName) {
return _doc.createElement(tagName);
}
Doc.Append = function (dom) {
_doc.body.appendChild(dom);
}
Doc.Get = function (_id) {
return _doc.getElementById(_id);
} //无限级 select 分类
function Select(arr, chg,callback) {
//获得子类 集合(select)
var getSel = function (pid) {
var _select = Doc.Create("select");
_select.options.add(new Option('选择分类', ""));
for (var i = 0; i < arr.length; i++) {
if (arr[i].pid == pid) {
_select.options.add(new Option(arr[i].name, arr[i].id));
}
} var delChildfun = function (obj) { if (obj.child) {
var _child = obj.child; if (_child.parentNode) {
_child.parentNode.removeChild(_child);
}
delChildfun(_child);
}
} _select.onchange = function () {
delChildfun(this);
this.child = getSel(this.options[this.selectedIndex].value);
chg(this.child);
callback(this.options[this.selectedIndex]);
} return _select; } //===================获得节点
var r_arr = [];
var getPidById = function (id) {
for (var i = 0; i < arr.length; i++)
if (arr[i].id == id) return arr[i].pid; return -1;
} var getSelBySid = function (sid) {
var pid = getPidById(sid); var sel = getSel(pid);
for (var i = 0; i < sel.options.length; i++) {
if (sel.options[i].value == sid) {
sel.selectedIndex = i; break;
}
} if (pid > 0) getSelBySid(pid);
r_arr.push(sel);
} this.getDom = function (selectid) {
getSelBySid(selectid || arr[0].id);
for (var i = 0; i < r_arr.length; i++)
if (i + 1 < r_arr.length)
r_arr[i].child = r_arr[i + 1]; return r_arr;
}
} /**==============demo==============**/ var data = [
{ id: 1, name: "前端开发", pid: 0 },
{ id: 2, name: "CSS", pid: 1 },
{ id: 3, name: "JS", pid: 1 },
{ id: 4, name: "HTML", pid: 1 },
{ id: 5, name: "数据库", pid: 0 },
{ id: 6, name: "SQLServer", pid: 5 },
{ id: 7, name: "MYSql", pid: 5 },
{ id: 8, name: "Oracle", pid: 5 },
{ id: 9, name: "PLSQL", pid: 8 }
]; var demo2 = Doc.Get("demo2");
var chg = function (obj) {
if (obj.options.length > 1) {
obj.selectedIndex = 0;
demo2.appendChild(obj);
}
} var sel2 = new Select(data, chg, function (obj) {
$("#txt_value").val(obj.value);
$("#txt_text").val(obj.text); }); var _arr = sel2.getDom(9);
for (var i = 0; i < _arr.length; i++) {
demo2.appendChild(_arr[i]);
}
/**==============demo==============**/ </script>

jquery js javascript select 无限级 插件 优化foxidea版的更多相关文章

  1. jquery, js轮播图插件Swiper3

    轮播图插件Swiper3 HTML代码 如果只是简单的使用轮播图,直接复制我的html代码就可以. 如果想要高级一些,就自己去看文档吧 <!DOCTYPE html> <html l ...

  2. JQuery/JS插件 jsTree加载树,预先加载,初始化时加载前三级节点,当展开第三级节点时 就加载该节点下的所有子节点

    jsTree加载树, 初始化时 加载前三级节点, 当展开第三级节点时 就加载该节点下的所有子节点 html: <!DOCTYPE html> <html> <head&g ...

  3. Jquery.validate.js表单验证插件的使用

    作为一个网站web开发人员,以前居然不知道还有表单验证这样好呀的插件,还在一行行写表单验证,真是后悔没能早点知道他们的存在. 最近公司不忙,自己学习一些东西的时候,发现了validation的一个实例 ...

  4. jQuery对标签select优化:实现模糊搜索查询功能

    由于select标签中的option条数较多,翻页查询比较麻烦,需要对select标签进行优化,解决方法是通过增加模糊查询功能来提高用户体验感. 优化后的界面如下: 在实现这个优化的过程中,参考了两个 ...

  5. jQuery 是javascript的一个库(常用插件、处理器)

    jQuery校验官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation jQuery就是javascript的一个库,把我 ...

  6. JQuery/JS插件 jsTree加载树,普通加载,点一级加载一级

    前端: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <tit ...

  7. Echo.js – 简单易用的 JavaScript 图片延迟加载插件

    Echo.js 是一个独立的延迟加载图片的 JavaScript 插件.Echo.js 不依赖第三方库,压缩后不到1KB大小. 延迟加载是提高网页首屏显示速度的一种很有效的方法,当图片元素进入窗口可视 ...

  8. Javascript和jQuery WordPress 图片轮播插件, 内容滚动插件,前后切换幻灯片形式显示

    用于在有限的网页空间内展示一组产品图片或者照片,同时还有非常吸引人的动画效果.本文向大家推荐12款实用的 jQuery 图片轮播效果插件,帮助你在你的项目中加入一些效果精美的图片轮播效果,希望这些插件 ...

  9. jQuery图片懒加载插件jquery.lazyload.js使用实例注意事项说明

    jQuery图片懒加载插件jquery.lazyload.js使用实例注意事项说明 jquery.lazyload.js是一个用JavaScript编写的jQuery插件.它可以延迟加载长页面中的图片 ...

随机推荐

  1. hdu 1851 尼姆+巴什博弈

    先在每堆中进行巴什博弈,然后尼姆 #include<stdio.h> int main() { int T; int i,n; int ans,m,l; scanf("%d&qu ...

  2. [转]svn常用命令

    谢谢原作者:http://blog.sina.com.cn/s/blog_963453200101eiuq.html 1.检出svn  co  http://路径(目录或文件的全路径) [本地目录全路 ...

  3. Dwz下拉菜单的二级联动

    在DWZ文档中对组合框combox的是这样描述的: 在传统的select 用class 定义:class=”combox”, html 扩展:保留原有属性name,  增加了属性:ref. ref 属 ...

  4. VPS -Digital Ocean -初试以及VPN的搭建

    首先恭喜你找到这篇博客,它会带你走出困境. 题外话(请忽略):一直以来想搞一个VPS,终于在自己的刺激下试了一下Digital Ocean,还没有使用很长时间不做太多评论,唯一给我的感觉是各种操作还算 ...

  5. 长按事件jquery mobile

    chat_enlarge.addEventListener('touchend', function(event) { if(fingers == 1){ event.preventDefault() ...

  6. RobotFramework自动化测试之环境搭建安装教程(一)

    RobotFramework是基于Python语言的工具,所以装RF之前要先安装Python: Python现在有2.7跟3.5两个版本,如果是先装了3.5的话,是装不了2.7的.只有先装2.7的 才 ...

  7. android应用程序如何调用支付宝接口

    最近在做一个关于购物商城的项目,项目里面付款这块我选的是调用支付宝的接口,因为用的人比较多. 在网上搜索了以下,有很多这方面的教程,但大部分教程过于陈旧,而且描述的过于简单.而且支付宝提供的接口一直在 ...

  8. 关于C/C++中数组元素的初始化

      1.一维数组初始化 对于一维数组,其初始化有一个错误的观点是:一直以为 int a[256]={0};是把a的所有元素初始化为0,int a[256]={1};是把a所有的元素初始化为1. 数组可 ...

  9. C# 键值对类相关

    一 C# 键值对类有以下类: ①    IDictionary<string, Object> idc = new Dictionary<string, object>(); ...

  10. 20145223《Java程序程序设计》第10周学习总结

    20145223<Java网络编程> 一.Java的网络编程 ·网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来. ·java.net包中J2SE的API包含有类 ...