2016-05-12 87 views
0

我的任務是在多個div中有一個複選框。當複選框被選中時,我想隱藏div。我想用Jquery來實現這個功能。我覺得我很接近,但缺少一些必要的東西。通過多個輸入複選框的JQuery循環

這是我的代碼和任何幫助將不勝感激。

感謝,

ROKA

<div id='legGroup1' class="elementGroup"> 
    <input type="checkbox" class="delCheck" id="1" />Delete</label> 
</div> 

<div id='legGroup2' class="elementGroup"> 
    <input type="checkbox" class="delCheck" id="2" />Delete</label> 
</div> 

<button type='button' id='removeLeg'></button> 

$("#removeLeg").click(function (e) { 
    $('.delCheck').each(function() { 
     if (this.id.prop('checked')) { 
      $("#legGroup" + this.id).hide(); 
     } 
    }); 
}); 

回答

0

你可以簡單地查找父元素:

$("#removeLeg").click(function() { 
    $('.delCheck:checked').each(function() { 
    //   ^^^^^^^^ -> look it filters only checked elements 

     $(this).parent().hide(); 

    }); 
}); 

或者,更準確,使用最接近的方法:

$(this).closest('.elementGroup').hide(); 
0

由於你使用一個each函數,根據函數返回的數組中的項的值作爲它的基礎。

$("#removeLeg").click(function (e) {  
    $('.delCheck').each(function (key, value) { 
     if ($(value).is(':checked')) { 
      $(value).parent().hide(); 
     } 
    }); 
}); 
0

首先,您在HTML中缺少開放的label標記。

<label><input type="checkbox" class="delCheck" id="1" />Delete</label> 

至於click事件,你可以試試這個,循環遍歷每個複選框並隱藏它們最接近的div父項。

$(document).ready(function(){ 
    $('#removeLeg').on('click', function(){ 
     $('.delCheck:checked').each(function(){ 
      $(this).parents('div').hide(); 
     }); 
    }); 
}); 

這裏有一個演示:https://jsfiddle.net/nx9e1yp5/1/