问题
Hi i could really do with some help on this as I cannot get the button to select all checkboxes within .voltSiteResultContainer to work
HTML Example:
<div class="pageContainer">
<input type="button" class="check" value="check all"> // want this button to check all on page
<div class="voltSiteResultContainer">
<div class="checkWrap">
<input type="button" class="checkSite" value="check all"> // want this button to check all within .voltSiteResultContainer
</div>
<input name="checkFile" type="checkbox" class="checkFile" value="1514583">
<input name="checkFile" type="checkbox" class="checkFile" value="1514583">
<input name="checkFile" type="checkbox" class="checkFile" value="1514583">
</div>
<div class="voltSiteResultContainer">
<div class="checkWrap">
<input type="button" class="checkSite" value="check all"> // want this button to check all within .voltSiteResultContainer
</div>
<input name="checkFile" type="checkbox" class="checkFile" value="1514583">
<input name="checkFile" type="checkbox" class="checkFile" value="1514583">
<input name="checkFile" type="checkbox" class="checkFile" value="1514583">
</div>
Current Jquery:
<script type="text/javascript">
$(document).ready(function(){
$('.check:button').toggle(function(){
$('input:checkbox').attr('checked','checked');
$(this).val('uncheck all')
},function(){
$('input:checkbox').removeAttr('checked');
$(this).val('check all');
})
})
$(document).ready(function(){
$('.checkSite:button').toggle(function(){
.closest('.voltSiteResultContainer').find('input:checkbox').attr('checked','checked');
$(this).val('uncheck all')
},function(){
$('input:checkbox').removeAttr('checked');
$(this).val('check all');
})
})
So $('.check:button') work but $('.checkSite:button') is not :(.
Thank you in advance for any help you can give me :)
回答1:
jsBin demo
Add $(this) in line 11 - and a missing </div> in your HTML:
$(document).ready(function(){
$('.check:button').toggle(function(){
$('input:checkbox').attr('checked','checked');
$(this).val('uncheck all');
},function(){
$('input:checkbox').removeAttr('checked');
$(this).val('check all');
});
$('.checkSite:button').toggle(function(){
$(this).closest('.voltSiteResultContainer').find('input:checkbox').attr('checked','checked'); // HERE!!
$(this).val('uncheck all');
},function(){
$(this).closest('.voltSiteResultContainer').find('input:checkbox').removeAttr('checked');
$(this).val('check all');
});
});
Fixed HTML markup:
<div class="pageContainer">
<input type="button" class="check" value="check all" /> // want this button to check all on page
<div class="voltSiteResultContainer">
<div class="checkWrap">
<input type="button" class="checkSite" value="check all" /> // want this button to check all within .voltSiteResultContainer
</div>
<input name="checkFile" type="checkbox" class="checkFile" value="1514583" />
<input name="checkFile" type="checkbox" class="checkFile" value="1514583" />
<input name="checkFile" type="checkbox" class="checkFile" value="1514583" />
</div>
</div>
<div class="voltSiteResultContainer">
<div class="checkWrap">
<input type="button" class="checkSite" value="check all" /> // want this button to check all within .voltSiteResultContainer
</div>
<input name="checkFile" type="checkbox" class="checkFile" value="1514583" />
<input name="checkFile" type="checkbox" class="checkFile" value="1514583" />
<input name="checkFile" type="checkbox" class="checkFile" value="1514583" />
</div>
来源:https://stackoverflow.com/questions/12132898/jquery-button-selecting-all-checkboxed-within-a-div-and-button-selecting-all-on