使用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 相关文章推荐
JavaScript库 开发规则
Jan 31 Javascript
根据出生日期自动取得星座的js代码
Jul 20 Javascript
JS判断客户端是手机还是PC的2个代码
Apr 12 Javascript
js隐式全局变量造成的bug示例代码
Apr 22 Javascript
jQuery中insertAfter()方法用法实例
Jan 08 Javascript
js对象继承之原型链继承实例
Jan 10 Javascript
js实现多选项切换导航菜单的方法
Feb 06 Javascript
Javascript中的对象和原型(二)
Aug 12 Javascript
jQuery实现字符串全部替换的方法【推荐】
Mar 09 Javascript
微信小程序 五星评分的实现实例
Aug 04 Javascript
浅谈React之状态(State)
Sep 19 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对现有搜索引擎的调用
2013/06/25 PHP
destoon在360浏览器下出现用户被强行注销的解决方法
2014/06/26 PHP
JavaScript 权威指南(第四版) 读书笔记
2009/08/11 Javascript
jquery 3D球状导航的文章分类
2010/07/06 Javascript
框架页面高度自动刷新的Javascript脚本
2013/11/01 Javascript
利用javascript实现禁用网页上所有文本框,下拉菜单,多行文本域
2013/12/14 Javascript
jQuery 如何给Carousel插件添加新的功能
2016/04/18 Javascript
jQuery checkbox选中问题之prop与attr注意点分析
2016/11/15 Javascript
jQuery事件绑定方法学习总结(推荐)
2016/11/21 Javascript
Angular实现的简单查询天气预报功能示例
2017/12/27 Javascript
解决Vue中引入swiper,在数据渲染的时候,发生不滑动的问题
2018/09/27 Javascript
VUE Elemen-ui之穿梭框使用方法详解
2021/01/19 Javascript
在Python中操作时间之tzset()方法的使用教程
2015/05/22 Python
Python脚本文件打包成可执行文件的方法
2015/06/02 Python
Python扫描IP段查看指定端口是否开放的方法
2015/06/09 Python
详解MySQL数据类型int(M)中M的含义
2016/11/20 Python
Python科学计算之Pandas详解
2017/01/15 Python
对Python w和w+权限的区别详解
2019/01/23 Python
树莓派安装OpenCV3完整过程的实现
2019/10/10 Python
pytorch 图像中的数据预处理和批标准化实例
2020/01/15 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧装饰器信号与槽详细使用方法与实例
2020/03/06 Python
解决pyPdf和pyPdf2在合并pdf时出现异常的问题
2020/04/03 Python
Pytorch上下采样函数--interpolate用法
2020/07/07 Python
详解pandas映射与数据转换
2021/01/22 Python
HTML5 Canvas概述
2009/08/26 HTML / CSS
html5给汉字加拼音加进度条的实现代码
2020/04/07 HTML / CSS
Debenhams百货英国官方网站:Debenhams UK
2016/07/12 全球购物
戴尔美国官网:Dell
2016/08/31 全球购物
本科生个人求职自荐信
2013/09/26 职场文书
中专生毕业个人鉴定
2014/02/26 职场文书
应届大学生求职信
2014/07/20 职场文书
2014年最新党员对照检查材料汇总
2014/09/15 职场文书
给朋友的道歉短信
2015/05/12 职场文书
2019让人心动的商业计划书
2019/06/27 职场文书
MySQL分库分表与分区的入门指南
2021/04/22 MySQL
go:垃圾回收GC触发条件详解
2021/04/24 Golang