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

操蛋!
公司连QQ都不能上 随便截个图!
立即学习“PHP免费学习笔记(深入)”;
先贴数据库
| 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
<span <</span><span div </span><span id</span><span ="select"</span> <span ></span>
<span <</span><span select </span><span name</span><span ="category_1"</span><span id</span><span ="category_1"</span><span onChange</span><span ="change('category_1');"</span><span ></span>
<span <</span><span option</span><span ></span>请选择分类<span </</span><span option</span><span ></span>
<span <!--</span><span {foreach from=$galleryCategory item=category} </span><span --></span>
<span <</span><span option </span><span value</span><span ="{$category.id}"</span><span ></span>{$category.category_name}<span </</span><span option</span><span ></span>
<span <!--</span><span {/foreach} </span><span --></span>
<span </</span><span select</span><span ></span>
<span </</span><span div</span><span ></span><span>$galleryCategory 去数据的PHP代码为<br /><br /></span>
$sql = " select * from yl_gallery_category where pid = 0";
$galleryCategory = $db->query($sql);
$smarty->assign("galleryCategory",$galleryCategory);
给辞职的同事的项目擦屁股 用的原生态代码 还是比较容易理解的
然后就是关键的 JS代码了 change(val) {
<em id="__mceDel"><span var</span> str = val; <span //</span><span select的id</span>
<span var</span> num; <span //</span><span 当前级数</span>
<span var</span> id; <span //</span><span 分类id</span>
num = str.substr(9,10<span );
</span><span //</span><span alert(num);</span>
<span var</span> nownum = parseInt(num)+1; <span //</span><span 将字符串转换为数字</span>
id = $("#"+str+""<span ).val();
</span><span var</span> r = /^[1-9]+[0-9]*]*$/; <span //</span><span 正整数</span>
<span if</span> (!<span r.test(id)) {
</span><span //</span><span 清空过时的选项</span>
$("select").each(<span function</span><span (index){
</span><span if</span>(index+1 ><span num) {
$(</span><span this</span><span ).remove();
}
})
</span><span return</span> <span false</span><span ;
}
</span><span var</span> url = 'gallery.php?act=category&pid='+<span id;
$.ajax({
type: </span>"POST"<span ,
cache: </span><span false</span><span ,
url: url,
datatype : </span>'json'<span ,
timeout : </span>3000<span ,
success: </span><span function</span><span (result){
</span><span if</span> ( result != 0<span ) {
</span><span var</span> html = "<select name=category_"+nownum+" id=category_"+nownum+" onChange=change('category_"+nownum+"'); >"<span ;
html </span>+= "<option>请选择分类 </option>"<span ;
</span><span var</span> datas =<span eval(result);
$.each(datas, </span><span function</span><span (i,val){
html </span>+= "<option value='"+val.id+"' >"+val.category_name+"</option>"<span ;
});
html </span>+= "</select>"<span ;
</span><span //</span><span 清空过时的选项</span>
$("select").each(<span function</span><span (index){
</span><span if</span>(index+1 ><span num) {
$(</span><span this</span><span ).remove();
}
})
$(</span>"#select"<span ).append(html);
} else {<br /></span></em><span> //</span><span>清空过时的选项</span>
$("select").each(<span>function</span><span>(index){
</span><span>if</span>(index+1 ><span> num) {
$(</span><span>this</span><span>).remove();
}
})</span><span }
},
error: </span><span false</span><span
});
}</span>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 大功告成!
<span><br /><br /></span>
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号