使用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 相关文章推荐
js判断选择时间不能小于当前时间的示例代码
Sep 24 Javascript
通过pjax实现无刷新翻页(兼容新版jquery)
Jan 31 Javascript
原生JavaScript+LESS实现瀑布流
Dec 12 Javascript
Angularjs编写KindEditor,UEidtor,jQuery指令
Jan 28 Javascript
.NET微信公众号开发之创建自定义菜单
Jul 16 Javascript
javascript倒计时效果实现
Nov 12 Javascript
js实现九宫格拼图小游戏
Feb 13 Javascript
详解vue静态资源打包中的坑与解决方案
Feb 05 Javascript
vue2.0+koa2+mongodb实现注册登录
Apr 10 Javascript
JavaScript实现留言板案例
Mar 17 Javascript
基于openlayers实现角度测量功能
Sep 28 Javascript
js实现简易点击切换显示或隐藏
Nov 29 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
先进的自动咖啡技术,真的可以取代咖啡师吗?
2021/03/06 冲泡冲煮
帝国cms目录结构分享
2015/07/06 PHP
php版微信js-sdk支付接口类用法示例
2016/10/12 PHP
jQuery.Autocomplete实现自动完成功能(详解)
2010/07/13 Javascript
javascript实现TreeView 无刷新展开的实例代码
2013/07/13 Javascript
Eclipse下jQuery文件报错出现错误提示红叉
2014/01/13 Javascript
Jquery搜索父元素操作方法
2015/02/10 Javascript
jQuery链式调用与show知识浅析
2016/05/11 Javascript
深入理解js数组的sort排序
2016/05/28 Javascript
15个非常实用的JavaScript代码片段
2016/12/18 Javascript
解决vue中对象属性改变视图不更新的问题
2018/02/23 Javascript
webpack+vue-cli项目中引入外部非模块格式js的方法
2018/09/28 Javascript
微信小程序使用for循环动态渲染页面操作示例
2018/12/25 Javascript
解决echarts的多个折现数据出现坐标和值对不上的问题
2018/12/28 Javascript
vue-cli创建的项目中的gitHooks原理解析
2020/02/14 Javascript
jquery更改元素属性attr()方法操作示例
2020/05/22 jQuery
vue 页面跳转的实现方式
2021/01/12 Vue.js
python利用dir函数查看类中所有成员函数示例代码
2017/09/08 Python
对pycharm 修改程序运行所需内存详解
2018/12/03 Python
对Python协程之异步同步的区别详解
2019/02/19 Python
python通过paramiko复制远程文件及文件目录到本地
2019/04/30 Python
详解pandas中MultiIndex和对象实际索引不一致问题
2019/07/23 Python
PyCharm 2020 激活到 2100 年的教程
2020/03/25 Python
jupyter notebook中美观显示矩阵实例
2020/04/17 Python
PyQt5 QDockWidget控件应用详解
2020/08/12 Python
浅谈对python中if、elif、else的误解
2020/08/20 Python
python GUI计算器的实现
2020/10/09 Python
python实现简单的井字棋游戏(gui界面)
2021/01/22 Python
使用CSS3的::selection改变选中文本颜色的方法
2015/09/29 HTML / CSS
HTML5实现WebSocket协议原理浅析
2014/07/07 HTML / CSS
在校生汽车维修实习自我鉴定
2013/09/19 职场文书
如何客观的进行自我评价
2013/12/17 职场文书
电子信息专业应届生自荐信
2014/06/04 职场文书
社区公民道德宣传日活动总结
2015/03/23 职场文书
文艺演出主持词
2015/07/01 职场文书
导游词之西安骊山
2019/12/03 职场文书