【问题标题】:Jquery how to checked the checkbox in betweenJquery如何检查两者之间的复选框
【发布时间】:2013-03-22 17:30:26
【问题描述】:

如何勾选代码 6000,它会自动选中 7000 之间的复选框?如果选中 7000,这也会在 7000 和 7004 之间

    $('.mGrid tr').each(function () {
    if (!this.rowIndex) return;
    if ($(this).find("td:eq(2)").text() =='S') {
        $(this).css({
            'font-weight': '800',
            'background-color': '#DBFF94',
            'border' : '2px solid black'
        });

    }
});
<table class="mGrid" cellspacing="0" rules="rows" border="1" id="GridView1" style="border-collapse:collapse;">
            <tr align="left">
                <th scope="col">
                                <span class="chkHeader"><input id="GridView1_chkAll" type="checkbox" name="ctl00$MainContent$nnn$GridView1$ctl01$chkAll" /></span>
                            </th><th scope="col">Code</th><th scope="col">Sub Code</th><th scope="col">Title</th><th scope="col">Description</th><th class="HiddenColumn" scope="col">&nbsp;</th>
            </tr><tr>
                <td>
                                <span class="chkItem"><input id="GridView1_chkCheck_0" type="checkbox" name="ctl00$MainContent$nnn$GridView1$ctl02$chkCheck" /></span>
                            </td><td>1000</td><td>S</td><td>Main</td><td>Summary of everything </td><td class="HiddenColumn"><a href="javascript:__doPostBack(&#39;ctl00$MainContent$nnn$GridView1&#39;,&#39;Select$0&#39;)">Select</a></td>
            </tr><tr class="alt">
                <td>
                                <span class="chkItem"><input id="GridView1_chkCheck_1" type="checkbox" name="ctl00$MainContent$nnn$GridView1$ctl03$chkCheck" /></span>
                            </td><td>6000</td><td>S</td><td>Report</td><td>All Reports</td><td class="HiddenColumn"><a href="javascript:__doPostBack(&#39;ctl00$MainContent$nnn$GridView1&#39;,&#39;Select$1&#39;)">Select</a></td>
            </tr>
        </table>

添加了html部分,有点乱

####更新

如果我想在两者之间选择 1,例如,选中 6001-6005,代码 6000 复选框将自动选中,我该怎么做? $(this).closest('tr').prevUntil('tr.lights').css('background-color','black');我尝试 prevUntil,但它几乎突出了所有 prev $(this).closest('tr').prev('tr.lights').css('background-color','black');这只有在靠近绿色行时才能突出显示

【问题讨论】:

  • 您还需要展示 HTML 的结构。
  • ...否则我们将无法为您提供适当的帮助。无论如何,解决方案可能涉及api.jquery.com/nextUntil
  • 看下一个直到现在,嗯,它看起来像我在寻找什么,但需要研究一下这个

标签: jquery


【解决方案1】:

如果您的内容是动态创建的,您可以向分组元素添加自定义属性,例如 data-group="6000",这样您就可以执行以下操作:

$('[data-group]').click(function(){
$("[data-group='"+this.attr('data-group')+"']").attr('checked','checked');
});

【讨论】:

    【解决方案2】:

    查看工作版本http://jsbin.com/edamuh/3/edit

    如果您有以下 HTML(注意输入是同级的)

      1<input type="checkbox"/>
      2<input type="checkbox"/>
      3<input type="checkbox"/>
      4<input type="checkbox"/>
      5<input type="checkbox"/>
      6<input type="checkbox"/>
      7<input type="checkbox"/>
      8<input type="checkbox"/>
      9<input type="checkbox"/>
      0<input type="checkbox"/>
    

    你可以使用下面的 sn-p 来检查复选框,直到下一个被选中

     $('input').click(function(){
        var $t = $(this);
        var unchkds = $t.nextUntil('input:checked', 'input[type="checkbox"]');
        var allInputsAfterN = $t.nextAll('input').length;
        if(unchkds.length > 0 && unchkds.length != allInputsAfterN) {
           console.log(unchkds.length + " unchecked after. " + allInputsAfterN + " total after");
          unchkds.prop('checked', true);
        }
      });
    

    你必须做一些类似的事情来向后检查复选框(使用 prevUntil 和 prevAll)

    【讨论】:

    • awww,感觉好舒服,需要研究一下这个prevUntil & prevAll的使用方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 2020-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多