开发者社区> 问答> 正文

jq 如何根据id逐个赋值?

自己写了个页面想要模拟多选框 大部分实现了 差了一点样式上的小效果
由于label想要把宽度撑起来的前提是外面的li标签的宽度必须大于等于label的宽度,我就想获取到label的宽度按照id赋予给对于的li标签上 失败了 考虑不出症结在哪 求解

html处的代码

        <li class="Check-box clearfix">
            <ul>
                <li class="checkbox-li title"><span>专&nbsp;&nbsp;&nbsp;业:</span></li>
                <li class="checkbox-li bb">可多选</li>            
                <li class="checkbox-li checkboxOne" id="input-01">
                    <input type="checkbox" value="1" id="checkboxOneInput-01" name="" />
                    <label for="checkboxOneInput-01" class="check-label" id="t-01">创新实验班</label>
                </li>
                 <li class="checkbox-li checkboxOne" id="input-02" >
                    <input type="checkbox" value="2" id="checkboxOneInput-02" name="" />
                    <label for="checkboxOneInput-02" class="check-label" id="t-02">创新班</label>
                </li>

            </ul>
        </li>

下面是jq代码

   $(document).ready(function(){
        $('.check-label').each(function(){
            var clid = $(this).attr('id');
            var wclid = $("#"+clid).innerWidth();
            var ww = $("#inpu" + clid );
            ww.width(wclid);
        });
    });

展开
收起
杨冬芳 2016-06-12 15:19:28 2057 0
1 条回答
写回答
取消 提交回答
  • IT从业

    按你的思路,你的脚本是没错的,不过有几个地方需要优化一下

    $(document).ready(function() {
        $('.check-label').each(function() {
            var label = $(this);
            var clid = $(this).attr('id');
            // 当前 label 已经取到了,不用再用 $() 根据 ID 的封装的效率略低
            var wclid = label.innerWidth();
            // 这里 t-xx 和 input-xx 的关系很明确,就是直接的包含关系
            // 所以可以用 parnet() 来获取外层节点,不需要用 $() 来获取
            // var ww = $("#inpu" + clid);
            var ww = label.parent();
            ww.width(wclid);
        });
    });

    倒是改改样式表可能会达到你的效果

    li {
        display: inline-block;
    }

    screenshot

    2019-07-17 19:34:10
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载