【问题标题】:jQuery select/unselect all siblingsjQuery选择/取消选择所有兄弟姐妹
【发布时间】:2012-01-20 08:19:43
【问题描述】:

我试图在第一个被选中时选择所有兄弟姐妹.. 然后如果它未选中,则所有兄弟姐妹都应该被取消选中。

但我无法解决,所以欢迎任何指针:)

<script type='text/javascript' src='http://code.jquery.com/jquery-1.7.1.js'></script>           
    <ul>
    <li><input id="checkall" type="checkbox" />Select all</li>
    <li><input type="checkbox" />Child 1</li>
    <li><input type="checkbox" />Child 2</li>
    <li><input type="checkbox" />Child 3</li>
    <li><input type="checkbox" />Child 4</li>
</ul>

<script type="text/javascript">
            //clicking the first checkbox should check or uncheck all checkboxes in that element 
$(document).ready(function(){
    $('#checkall').click(function(){
        if ($(this).closest('ul').find('input:checkbox').attr('checked', false)) {
            $(this).closest('ul').find('input:checkbox').attr('checked', true)
        }
        else ($(this).closest('ul').find('input:checkbox').attr('checked', true)); {
            $(this).closest('ul').find('input:checkbox').attr('checked', false)
        }
    });
});
</script>

【问题讨论】:

    标签: jquery select checkbox


    【解决方案1】:

    非常基本:

        $('#checkall').click(function(){
    
           //select ul
           $(this).closest('ul')
    
            //find checkbox
            .find('> li > input[type=checkbox]') //or : input[type=checkbox]
    
             //not first check - is the 'select all'
            .not(':first')
    
             //set value
            .prop('checked', this.checked)
        });
    

    或简称:

    $('#checkall').click(function(){
       $(this).closest('ul').find('> li > input[type=checkbox]').not(':first').prop('checked', this.checked)
    });
    

    【讨论】:

      【解决方案2】:

      .attr('checked', false) 会将“false”值设置为元素的已检查属性,并且不返回布尔值。您可以像这样简化代码。

      $(document).ready(function(){
          $('#checkall').click(function(){
              $(this).closest('ul').find(':checkbox').attr('checked', this.checked);
          });
      });
      

      【讨论】:

      • 相关问题:我在选中时设置了一个新课程,但我点击的复选框没有获得课程..? $(this).closest('ul').find('span').toggleClass('checked');
      • 试试这个$(this).closest('ul').find('span').toggleClass('checked', this.checked);
      • 在问题中会有一个复选框将其标记为答案然后提交。
      • 如何让它在当前的 ul 中工作? (如果我添加另一个 ul,它会在第一个 ul 中选择)
      • 在第一个之后.. 没有嵌套:)
      猜你喜欢
      • 1970-01-01
      • 2011-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-05
      • 1970-01-01
      • 2011-01-09
      • 1970-01-01
      相关资源
      最近更新 更多