【问题标题】:Select all checkbox except the last of a specific element选择除特定元素的最后一个以外的所有复选框
【发布时间】:2016-06-24 00:14:10
【问题描述】:

我想检查一个特定元素的所有复选框是否都被选中,但最后一个 我有这种HTML

<ul class="progress-indicator">
  <li>
    //Others elements (variable)
    <input type="checkbox">
    <input type="checkbox">
    <input type="checkbox">
    <input type="checkbox"> // Exclude this one
  </li>
  <li>
    //Stuff here
  </li>
  <li>
    //Another stuff
  </li>
</ul>

我第一次尝试过

if($(".progress-indicator > li:first-child").find(":checkbox").length == $(".progress-indicator > li:first-child").find(":checkbox:checked").length)
{
   //All checkbox of first li are checked
}

这是可行的,但现在我想排除第一个 li 的最后一个复选框

所以我从那个开始

$(".progress-indicator > li:first-child").find(":checkbox:not(:last-child)").length

但它没有工作。此选择器仅选择第一个 li 的第一个复选框。我认为这是由于我以前拥有的Others elements。 (例如,复选框位于 div 内,该 div 位于另一个元素内。

那么,除了最后一个复选框OF this li 之外,如何选中第一个li 的所有复选框?

【问题讨论】:

标签: javascript jquery selector


【解决方案1】:

做,

var last = $(".progress-indicator >li:first-child").find(":checkbox:last");

所以你的陈述将是

if($(".progress-indicator > li:first-child").find(":checkbox").not(last).length == $(".progress-indicator > li:first-child").find(":checkbox:checked").not(last).length)
{
  //All checkbox of first li are checked, regardless of the last one
}

【讨论】:

    【解决方案2】:

    您可以使用带有负数的eqnot 选择器来省略最后一个元素

    var x=$("input:checkbox").not(":eq(-1)");
    x.each(function(){ // this part just for demo
    $(this).prop("checked",true)
    })
    

    JSFIDDLE

    【讨论】:

      【解决方案3】:

      我会使用 jQuery 的 each 函数来遍历复选框。我会排除最后一个。

      类似这样的:

      $checkboxes = $('.checkbox')
      lengthCheckboxes = $checkboxes.length;
      
      $checkboxes.each(function(i,e) {
      	if (i !== lengthCheckboxes - 1) 
      		$(e).prop( "checked", true );
      })
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
      <li>
          //Others elements (variable)
          <input class="checkbox" type="checkbox">
          <input class="checkbox" type="checkbox">
          <input class="checkbox" type="checkbox">
          <input class="checkbox" type="checkbox"> // Exclude this one
        </li>

      【讨论】:

        【解决方案4】:

        这样就可以了。

        $('.progress-indicator input[type="checkbox"]').not(':last-child').each(function(){
            $(this).prop("checked", true);
        });
        

        亲切的问候。

        【讨论】:

          猜你喜欢
          • 2011-01-24
          • 1970-01-01
          • 1970-01-01
          • 2011-02-04
          • 1970-01-01
          • 2016-03-19
          • 2015-02-07
          相关资源
          最近更新 更多