左侧点击右侧联动且可排序编辑保存选中元素参数

<div>
    <div>
        <div class="materMain" id="js_materA">
            <ul>
                <li>
                    <a href="javascript:">
                        <label>
                            <input type="hidden" name="左1" data-num="1">
                            <input type="checkbox" name="c_id" value="90">左1</label>
                    </a>
                </li>
                <li class="active">
                    <a href="javascript:">
                        <label>
                            <input type="hidden" name="左2" data-num="3" value="1">
                            <input type="checkbox" name="c_id" value="19">左2
                        </label>
                    </a>
                </li>
                <li>
                    <a href="javascript:">
                        <label>
                            <input type="hidden" name="左1" data-num="1">
                            <input type="checkbox" name="c_id" value="90">左1</label>
                    </a>
                </li>
                <li class="active">
                    <a href="javascript:">
                        <label>
                            <input type="hidden" name="左2" data-num="3" value="1">
                            <input type="checkbox" name="c_id" value="19">左2
                        </label>
                    </a>
                </li>
                <li>
                    <a href="javascript:">
                        <label>
                            <input type="hidden" name="左1" data-num="1">
                            <input type="checkbox" name="c_id" value="90">左1</label>
                    </a>
                </li>
                <li class="active">
                    <a href="javascript:">
                        <label>
                            <input type="hidden" name="左2" data-num="3" value="1">
                            <input type="checkbox" name="c_id" value="19">左2
                        </label>
                    </a>
                </li>
            </ul>
        </div>
    </div>
    <div>
        <div  id="js_materADesc">
            <ul class="editMater">
                <li data-name="左1" data-id="1">
                    <div>
                        <a href="javascript:" class="icon-plus"></a>
                        <span>左1x
                            <b>3</b>
                        </span>
                        <a href="javascript:" class="icon-minus"></a>
                    </div>
                </li>
                <li data-name="左2" data-id="1">
                    <div>
                        <a href="javascript:" class="icon-plus"></a>
                        <span>左2x
                            <b>6</b>
                        </span>
                        <a href="javascript:" class="icon-minus"></a>
                    </div>
                </li>
               
            </ul>
        </div>
    </div>
</div>


JQ部分

$("#js_materA ul li input[type=checkbox]").on("click",function(e){
                    //  e.stopPropagation();
                     var iNow = $(this).parents("li");
                     iNow.toggleClass("active");
                     iNow.find("input[type=hidden]").val(iNow.index());
                     if($(this).parents("li").hasClass("active")){
                        var iNumber = 1;
                        var txt = $(this).parents("li.active").find("input[type=hidden]").attr("name");
                        var oId = $(this).parents("li.active").find("input[type=hidden]").val();
                        var tmpHtml='<li data-name="'+txt+'" data-id="'+oId+'"><div><a href="javascript:" class="icon-plus"></a><span>'+txt+'x<b>'+iNumber+'</b></span><a href="javascript:" class="icon-minus"></a></div></li>';   
                        //结构
                       editBtn($(tmpHtml));
                         //排序
                   
                        //
                    }else if(!$(this).parents("li").hasClass("active")){
                        var iNow = $(this).parents("li").index();
                        var txt = $(this).parents("li").find("input[type=hidden]").attr("name");
                        var arrDel = $("#js_materADesc ul li");
                        for(var i=0;i<arrDel.length;i++){
                               var temp = arrDel[i].dataset.name;  
                               if(txt==temp){
                                   $("#js_materADesc ul li").eq(i).remove();
                               }
                        }
                    }
                })
 function editBtn(template){
                template.appendTo("#js_materADesc ul").on("click",'a',function(){
                    var temp = 1;
                    var o = Number($(this).siblings("span").find("b").text());
                    if($(this).hasClass("icon-plus")){
                            o+=1;
                    } else {
                        if(o==1){
                            o=1;
                        } else {
                            o-=1;
                        }
                    }
                    $(this).siblings("span").find("b").text(o);
                   $("#js_materA ul li").eq($(this).parents("li")[0].dataset.id).find("input[type=hidden]").attr("data-num",o);
                });
                 
                $("#js_materADesc ul li").sort(sortLi).appendTo($("#js_materADesc ul"));
            }

 //排序
        function sortLi(a, b){
            return ($(b).data('id')) < ($(a).data('id')) ? 1 : -1;    //升序排列
        }

说明:

给input添加点击事件(注:label的for为空时要把for去掉否则影响input选中事件)

1:checkbox选中时父集添加class="active",通过父集是否有active的class对右边显示内容进行编辑

2:选中时,把name,id都赋值给右边动态生成的li的自定义data-*属性中,方便排序以及删除

3:动态生成里的每个a点击事件特意单独写,用到了template.appendTo(父集).on(事件,元素,fn)

4:点击事件都是a的原因,判断元素class编辑功能,增/减

template. appendTo( "#js_materADesc ul"). on( "click", 'a',fn)
//编辑的数量动态赋值给左边对应元素的input[type="hidden"],方便后台取值
$( "#js_materA ul li"). eq( $( this). parents( "li")[ 0]. dataset. id). find( "input[type=hidden]"). attr( "data-num", o);

无论元素选择先后顺序,都会升序排列显示,一一对应

//排序
function sortLi( a, b){
return ( $( b). data( 'id')) < ( $( a). data( 'id')) ? 1 : - 1; //升序排列
}

(编辑页面时要先初始化数据,动态添加右侧数据)

data-*属性使用技巧

获取数据  dataset.名字 

 已经有data-*属性的input,设置数据的时候用input.attr("data-名字",新数据)   获取数据 input.attr("data-名字")






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值