使用js+jquery实现无限极联动


Posted in Javascript onMay 23, 2013

今天工作需要写树形的联动,于是写了个可扩展的无限极联动下拉选项
代码写的比较凌乱 先mark有空再整理

使用js+jquery实现无限极联动

随便截个图!
先贴数据库

id category_name 分类名 pid 父分类id orders 排序
1 22223331 0 1
2 2222111 1 1
12 44444 11 0
5 2222 1 1
6 2222 1 1
11 333 2 0
13 555555 12 0

页面代码 用的SMARTY

<div id="select" >
    <select name="category_1" id="category_1" onChange="change('category_1');">
        <option>请选择分类</option>
        <!-- {foreach from=$galleryCategory item=category} -->
            <option value="{$category.id}">{$category.category_name}</option>
        <!-- {/foreach} -->    
    </select>
</div>

$galleryCategory 去数据的PHP代码为
$sql = " select * from yl_gallery_category where pid = 0"; 
$galleryCategory = $db->query($sql); 
$smarty->assign("galleryCategory",$galleryCategory);

用的原生态代码 还是比较容易理解的
然后就是关键的 JS代码了function change(val) {
var str = val; //select的id
    var num; //当前级数
    var id; // 分类id
    num = str.substr(9,10);
    //alert(num);
    var nownum = parseInt(num)+1; // 将字符串转换为数字
    id = $("#"+str+"").val();
    var r = /^[1-9]+[0-9]*]*$/; //正整数
    if (!r.test(id)) {
        //清空过时的选项
        $("select").each(function(index){
            if(index+1 > num) {
                $(this).remove();
            }
        })        return false;
    }
    var url = 'gallery.php?act=category&pid='+id;
    $.ajax({
        type: "POST",
        cache: false,
        url: url,
        datatype : 'json',
        timeout : 3000,
        success: function(result){
            if ( result != 0) {    
                var html = "<select name=category_"+nownum+"     id=category_"+nownum+"  onChange=change('category_"+nownum+"'); >";
                html += "<option>请选择分类 </option>";
                var datas = eval(result);
                $.each(datas, function(i,val){      
                    html += "<option value='"+val.id+"' >"+val.category_name+"</option>";
                });   
                html += "</select>";
                //清空过时的选项
                $("select").each(function(index){
                    if(index+1 > num) {
                        $(this).remove();
                    }
                })
                $("#select").append(html);
            } else {





//清空过时的选项
                $("select").each(function(index){
                    if(index+1 > num) {
                        $(this).remove();
                    }
                })


 }
        },
        error: false
    });
}

AJAX 取数据的PHP代码
$sql = " select * from yl_gallery_category where pid = " .$pid; 
    $res = $db->query($sql); 
    if (empty($res)) { 
        $res = 0; 
    } 
    echo json_encode($res);

OK 大功告成!
Javascript 相关文章推荐
Date对象格式化函数代码
Jul 17 Javascript
JS实现悬浮移动窗口(悬浮广告)的特效
Mar 12 Javascript
node.js实现逐行读取文件内容的代码
Jun 27 Javascript
js简单的点击返回顶部效果实现方法
Apr 10 Javascript
JavaScript驾驭网页-获取网页元素
Mar 24 Javascript
jQuery 如何给Carousel插件添加新的功能
Apr 18 Javascript
详解Vue用axios发送post请求自动set cookie
May 10 Javascript
基于vue 添加axios组件,解决post传参数为null的问题
Mar 05 Javascript
jQuery实现的简单拖拽功能示例【测试可用】
Aug 14 jQuery
vue Element左侧无限级菜单实现
Jun 10 Javascript
解决vue-router路由拦截造成死循环问题
Aug 05 Javascript
五句话帮你轻松搞定js原型链
Dec 09 Javascript
dwz 如何去掉ajaxloading具体代码
May 22 #Javascript
自动最大化窗口的Javascript代码
May 22 #Javascript
JS中的prototype与面向对象的实例讲解
May 22 #Javascript
JS定时关闭窗口的实例
May 22 #Javascript
jquery自定义属性(类型/属性值)
May 21 #Javascript
jquery实现智能感知连接外网搜索
May 21 #Javascript
JQuery调webservice实现邮箱验证(检测是否可用)
May 21 #Javascript
You might like
一个很不错的PHP翻页类
2009/06/01 PHP
PHP常见数组函数用法小结
2016/03/21 PHP
php7基于递归实现删除空文件夹的方法示例
2017/06/15 PHP
JS input文本框禁用右键和复制粘贴功能的代码
2010/04/15 Javascript
js 操作符汇总
2014/11/08 Javascript
JavaScript中的数学运算介绍
2014/12/29 Javascript
拥Bootstrap入怀——导航栏篇
2016/05/30 Javascript
json的使用小结
2016/06/08 Javascript
简单实现轮播图效果的实例
2016/07/15 Javascript
js 数字、字符串、布尔值的转换方法(必看)
2017/04/07 Javascript
JS排序之选择排序详解
2017/04/08 Javascript
jQuery.form.js的使用详解
2017/06/14 jQuery
JS+canvas动态绘制饼图的方法示例
2017/09/12 Javascript
javascript流程控制语句集合
2017/09/18 Javascript
在 Node.js 中使用原生 ES 模块方法解析
2017/09/19 Javascript
AngularJS基于MVC的复杂操作实例讲解
2017/12/31 Javascript
[33:33]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第二场 11.27
2020/11/30 DOTA
python 正则表达式 概述及常用字符
2009/05/04 Python
Python使用multiprocessing实现一个最简单的分布式作业调度系统
2016/03/14 Python
Python爬取京东的商品分类与链接
2016/08/26 Python
Python爬取网页中的图片(搜狗图片)详解
2017/03/23 Python
Python的时间模块datetime详解
2017/04/17 Python
Python装饰器模式定义与用法分析
2018/08/06 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
2019/02/16 Python
python把1变成01的步骤总结
2019/02/27 Python
Python tcp传输代码实例解析
2020/03/18 Python
基于Python正确读取资源文件
2020/09/14 Python
迪士尼西班牙官方网上商店:ShopDisney西班牙
2020/02/02 全球购物
购房协议书
2014/04/11 职场文书
重点工程汇报材料
2014/08/27 职场文书
2014年无财产无子女离婚协议书范本
2014/10/09 职场文书
基层党支部整改方案
2014/10/25 职场文书
企业财务总监岗位职责
2015/04/03 职场文书
活着观后感
2015/06/03 职场文书
JavaScript嵌入百度地图API的最详细方法
2021/04/16 Javascript
vue实现在data里引入相对路径
2022/06/05 Vue.js