// 需要配合html设置特定属性
// rechild是指定它的下一级
// resibling是指定它的同级
// reparent是指定它的上一级
// 思路就是当前元素触发事件之后,先循环设置子级,子级还存在子级就继续循环下去,直到没有子级
// 之后循环同级,通过循环同级确定父级的选择状态
// 在通过父级的同级确定父级的父级的选择状态,直到没有父级
$(":checkbox").change(function(){
var $t = $(this),
val = this.checked,
child = $t.attr("rechild"),
sibling = $t.attr("resibling");
// 防止频繁点击
if( $("body").data("sending") ){
this.checked = !val;
return false;
}
Cart.addDis();
if ( child ){
_iteraChild($(child).filter(":visible"));
}
if ( sibling ){
_interaSib($(sibling).filter(":visible"));
}
// 当操作下一级时,如果被循环下一级的元素也存在下一级,就调用本身循环它的下一级
// 如果存在同一级时,就循环同一级,以确定这一级的上一级的状态
function _iteraChild( $child ){
var _parent = $child.attr("reparent");
$child.each(function(){
this.checked = val;
var $t = $(this),
_sibling = $t.attr(
checkbox 多级状态联动选择
最新推荐文章于 2024-05-09 17:58:10 发布