使用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 相关文章推荐
用于自动添加Digg This!按钮的JavaScript
Dec 23 Javascript
再谈IE中Flash控件的自动激活 ObjectWrap
Mar 09 Javascript
js的toLowerCase方法用法实例
Jan 27 Javascript
js获取滚动距离的方法
May 30 Javascript
localResizeIMG先压缩后使用ajax无刷新上传(移动端)
Aug 11 Javascript
js闭包引起的事件注册问题介绍
Mar 29 Javascript
Express + Node.js实现登录拦截器的实例代码
Jul 01 Javascript
关于vue中watch检测到不到对象属性的变化的解决方法
Feb 08 Javascript
vue父组件向子组件传递多个数据的实例
Mar 01 Javascript
JavaScript原型对象、构造函数和实例对象功能与用法详解
Aug 04 Javascript
移动端滑动切换组件封装 vue-swiper-router实例详解
Nov 25 Javascript
vue 微信分享回调iOS和安卓回调出现错误的解决
Sep 07 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
各种战术和打法的原创者
2020/03/04 星际争霸
基于Laravel5.4实现多字段登录功能方法示例
2017/08/11 PHP
你真的了解JavaScript吗?
2007/02/24 Javascript
jQuery 1.4 15个你应该知道的新特性(译)
2010/01/24 Javascript
js整数字符串转换为金额类型数据(示例代码)
2013/12/26 Javascript
javaScript 页面自动加载事件详解
2014/02/10 Javascript
60行js代码实现俄罗斯方块
2015/03/31 Javascript
JavaScript中数组的合并以及排序实现示例
2015/10/24 Javascript
JavaScript动态插入CSS的方法
2015/12/10 Javascript
jQuery.Validate表单验证插件的使用示例详解
2017/01/04 Javascript
JS变量中有var定义和无var定义的区别以及es6中let命令和const命令
2017/02/19 Javascript
jQuery插件HighCharts绘制简单2D折线图效果示例【附demo源码】
2017/03/21 jQuery
使用JavaScript实现表格编辑器(实例讲解)
2017/08/02 Javascript
JS动态添加的div点击跳转到另一页面实现代码
2017/09/30 Javascript
Angular利用内容投射向组件输入ngForOf模板的方法
2018/03/05 Javascript
详解在微信小程序的JS脚本中使用Promise来优化函数处理
2019/03/06 Javascript
浅谈Vue.js组件(二)
2019/04/09 Javascript
微信小程序自定义tabbar custom-tab-bar 6s出不来解决方案(cover-view不兼容)
2019/11/01 Javascript
vue计算属性+vue中class与style绑定(推荐)
2020/03/30 Javascript
JavaScript实现前端倒计时效果
2021/02/09 Javascript
python下paramiko模块实现ssh连接登录Linux服务器
2015/06/03 Python
python实现斐波那契数列的方法示例
2017/01/12 Python
利用python求相邻数的方法示例
2017/08/18 Python
简述:我为什么选择Python而不是Matlab和R语言
2017/11/14 Python
在numpy矩阵中令小于0的元素改为0的实例
2019/01/26 Python
python 接口实现 供第三方调用的例子
2019/08/13 Python
tensorflow从ckpt和从.pb文件读取变量的值方式
2020/05/26 Python
Python如何批量生成和调用变量
2020/11/21 Python
使用HTML和CSS3绘制基本卡通图案的示例分享
2015/11/06 HTML / CSS
Bench加拿大官方网站:英国城市服装品牌
2017/11/03 全球购物
初中生自我鉴定
2014/02/04 职场文书
公司担保书格式范文
2014/05/12 职场文书
2015年度优秀员工推荐信
2015/03/23 职场文书
运动会开幕式通讯稿
2015/07/18 职场文书
Python制作动态字符画的源码
2021/08/04 Python
JavaScript parseInt0.0000005打印5原理解析
2022/07/23 Javascript