2014-11-04 3 views
0

Существует несколько HTML-сегментов. Я хочу проверить «check_item», которые принадлежат этому «shopcart-con», когда «check_all» щелкнул. Но когда я нажимаю «check_all», все «check_item» были отмечены. Как это исправить? БлагодаряКак получить детей от конкретного родителя?

HTML:

<div class="shopcart-con" data-merchant-id="1"> 
    <div class="shopcart-list">  
      <div class="shopcart-lstop"><input type="checkbox" class="check_all" name="select"/>fruit shop A</div> 
      <div class="shopcart-lscon"> 
      <ul class="shop_contentul" data-product-id="1"> 
       <li class="checkinp"><input type="checkbox" class="check_item" name="aihao" /></li> 
       <li class="checkimg"><img src="images/home10.png" width="100%" height="75px"></li> 
       <li class="checknum" > 
        <p class="lineheight30">apple</p> 
         <span class="shopcart-num"> 
         <input type="button" name="" class="inp-reduce"> 
         <input type="text" name="" class="num" value="5"> 
         <input type="button" name="" class="inp-add"> 
         </span> 
       </li> 
        ¥<span class="unit_price">8.00</span> 
        <p><font color="#808080" size="2px"><s> $12.00</s></font></p> 
        <p>x<label class="shuli">5</label></p> 
        <input class="delbtn" name=""> 
      </ul> 
      <div class="clear"></div> 
      </div> 
      <div class="shopcart-lscon"> 
      <ul class="shop_contentul" data-product-id="2"> 
       <li class="checkinp"><input type="checkbox" class="check_item" name="aihao" /></li> 
       <li class="checkimg"><img src="images/home10.png" width="100%" height="75px"></li> 
       <li class="checknum" > 
        <span class="shopcart-num"> 
         <input type="button" name="" class="inp-reduce"> 
         <input type="text" name="" class="num" value="5"> 
         <input type="button" name="" class="inp-add"> 
         </span> 
       </li> 
        ¥<span class="unit_price">8.00</span> 
        <!-- <p><font color="#808080" size="2px"><s> $12.00</s></font></p> --> 
        <p>x<label class="shuli">5</label></p> 
        <input class="delbtn" name=""> 
      </ul> 
      <div class="clear"></div> 
      </div> 
      <div> 
       <p class="shopcart-money">共计<label class="product_quantity" data-merchant-id="1">10</label> sum:$<label class="price_sum" data-merchant-id="1" style="color:red">80</label></p> 
      </div> 
</div> 
</div> 

JS:

$('.check_all').click(function(){ 
     var checked_items = $('.check_all').closest('.shopcart-con').find('.check_item') 
     console.log(checked_items.length) 
     if($(this).prop('checked')){ 
      $.each(checked_items, function(i,val){ 
       val.checked = true; 
      }); 
     }else{ 
      $.each(checked_items, function(i,val){ 
       val.checked = false; 
      }); 
     } 
    }); 

ответ

1

Попробуйте это: вы используете $('.check_all').closest это будет найти shopcart-con под всем check_all. Но вам нужно найти shopcart-con для щелкнули check_all, следовательно, использовать $(this) как $(this).closest

$('.check_all').click(function(){ 
     var checked_items = $(this).closest('.shopcart-con').find('.check_item') 
     console.log(checked_items.length) 
     if($(this).prop('checked')){ 
      $.each(checked_items, function(i,val){ 
       val.checked = true; 
      }); 
     }else{ 
      $.each(checked_items, function(i,val){ 
       val.checked = false; 
      }); 
     } 
    }); 

DEMO

Вы можете сделать свой код еще короче, вам не нужно перебирать все флажок и установите его свойство, см ниже кода

$('.check_all').click(function(){ 
     var checked_items = $(this).closest('.shopcart-con').find('.check_item') 
     console.log(checked_items.length) 
     $(checked_items).prop('checked',this.checked); 
    }); 

DEMO

+0

Это работает. Спасибо – user1179442

+0

рад помочь вам :) –

Смежные вопросы