답변:
당신은 쓸 수 있습니다:
$(document).ready(function() {
$("#select-all-teammembers").click(function() {
var checkBoxes = $("input[name=recipients\\[\\]]");
checkBoxes.prop("checked", !checkBoxes.prop("checked"));
});
});
jQuery 1.6 이전 에는 prop ()이 아닌 attr () 만 있었을 때 다음 과 같이 작성했습니다.
checkBoxes.attr("checked", !checkBoxes.attr("checked"));
그러나 "부울"HTML 속성에 적용 할 prop()
때보 attr()
다 시맨틱이 우수 하므로 일반적으로이 상황에서 선호됩니다.
$('input[type=checkbox]').trigger('click');
아래 @ 2astalavista에 의해 언급 된 것은 간결하고 "변경"이벤트를 유발합니다.
//this toggles the checkbox, and fires its event if it has
$('input[type=checkbox]').trigger('click');
//or
$('input[type=checkbox]').click();
나는 이것이 오래되었다는 것을 알고 있지만 그 토글 에서 약간 모호한 질문은 각 확인란이 상태를 토글해야한다는 것을 의미 할 수 있습니다. 3을 체크하고 2를 체크하지 않으면, 토글하면 처음 3을 체크하지 않고 마지막 2를 체크합니다.
이를 위해 각 확인란의 상태를 전환하지 않고 모든 확인란을 동일한 상태로 만드는 솔루션은 작동하지 않습니다. $(':checkbox').prop('checked')
많은 확인란을 수행하면 모든 .checked
이진 속성 간에 논리 AND가 반환 됩니다. 즉, 속성 중 하나를 선택하지 않으면 반환 값은 false
입니다.
.each()
각 확인란 상태를 모두 동일하게 만들지 않고 실제로 각 상태를 토글하려는 경우 사용해야 합니다. 예 :
$(':checkbox').each(function () { this.checked = !this.checked; });
속성이 모든 브라우저에 존재 $(this)
하므로 핸들러 내부에 필요하지 않습니다 .checked
.
여기 또 다른 방법이 있습니다.
$(document).ready(function(){
$('#checkp').toggle(
function () {
$('.check').attr('Checked','Checked');
},
function () {
$('.check').removeAttr('Checked');
}
);
});
내가 생각할 수있는 가장 좋은 방법.
$('#selectAll').change(function () {
$('.reportCheckbox').prop('checked', this.checked);
});
또는
$checkBoxes = $(".checkBoxes");
$("#checkAll").change(function (e) {
$checkBoxes.prop("checked", this.checked);
});
또는
<input onchange="toggleAll(this)">
function toggleAll(sender) {
$(".checkBoxes").prop("checked", sender.checked);
}
jQuery 1.6부터는 .prop(function)
발견 된 각 요소의 확인 된 상태를 토글하는 데 사용할 수 있습니다.
$("input[name=recipients\\[\\]]").prop('checked', function(_, checked) {
return !checked;
});
확인란을 토글 해야하는 이미지라고 가정하면, 이것은 나를 위해 작동합니다
<img src="something.gif" onclick="$('#checkboxid').prop('checked', !($('#checkboxid').is(':checked')));">
<input type="checkbox" id="checkboxid">
특정 조건에서 Check-all 확인란이 자체적 으로 업데이트되어야합니다 . 클릭하려고 '# 선택 - 모든 teammembers' 다음을 선택 취소 몇 가지 항목을 선택 모두 다시 클릭합니다. 불일치를 볼 수 있습니다. 이를 방지하려면 다음 트릭을 사용하십시오.
var checkBoxes = $('input[name=recipients\\[\\]]');
$('#select-all-teammembers').click(function() {
checkBoxes.prop("checked", !checkBoxes.prop("checked"));
$(this).prop("checked", checkBoxes.is(':checked'));
});
BTW 모든 확인란 DOM 개체는 위에서 설명한대로 캐시되어야합니다.
다음은 html5 및 레이블이있는 확인란을 선택하지 않고 확인란을 전환하는 jQuery 방법입니다.
<div class="checkbox-list margin-auto">
<label class="">Compare to Last Year</label><br>
<label class="normal" for="01">
<input id="01" type="checkbox" name="VIEW" value="01"> Retail units
</label>
<label class="normal" for="02">
<input id="02" type="checkbox" name="VIEW" value="02"> Retail Dollars
</label>
<label class="normal" for="03">
<input id="03" type="checkbox" name="VIEW" value="03"> GP Dollars
</label>
<label class="normal" for="04">
<input id="04" type="checkbox" name="VIEW" value="04"> GP Percent
</label>
</div>
$("input[name='VIEW']:checkbox").change(function() {
if($(this).is(':checked')) {
$("input[name='VIEW']:checkbox").prop("checked", false);
$("input[name='VIEW']:checkbox").parent('.normal').removeClass("checked");
$(this).prop("checked", true);
$(this).parent('.normal').addClass('checked');
}
else{
$("input[name='VIEW']").prop("checked", false);
$("input[name='VIEW']").parent('.normal').removeClass('checked');
}
});
각 상자를 개별적으로 토글하려면 (또는 하나의 상자 만 작동) :
.each ()를 사용하는 것이 좋습니다. 다른 일이 일어나기를 원하면 수정하기 쉽고 여전히 비교적 짧고 읽기 쉽습니다.
예 :
// toggle all checkboxes, not all at once but toggle each one for its own checked state:
$('input[type="checkbox"]').each(function(){ this.checked = ! this.checked });
// check al even boxes, uncheck all odd boxes:
$('input[type="checkbox"]').each(function(i,cb){ cb.checked = (i%2 == 0); });
// set all to checked = x and only trigger change if it actually changed:
x = true;
$('input[type="checkbox"]').each(function(){
if(this.checked != x){ this.checked = x; $(this).change();}
});
참고로 ... 모든 사람들이 왜 .attr () 또는 .prop ()을 사용하여 물건을 검사하지 않는지 확실하지 않습니다.
내가 아는 한 element.checked는 모든 브라우저에서 항상 동일하게 작동합니까?
jQuery("#checker").click(function(){
jQuery("#mydiv :checkbox").each(function(){
this.checked = true;
});
});
jQuery("#dechecker").click(function(){
jQuery("#mydiv :checkbox").each(function(){
this.checked = false;
});
});
jQuery("#checktoggler").click(function(){
jQuery("#mydiv :checkbox").each(function(){
this.checked = !this.checked;
});
});
;)
<table class="table table-datatable table-bordered table-condensed table-striped table-hover table-responsive">
<thead>
<tr>
<th class="col-xs-1"><a class="select_all btn btn-xs btn-info"> Select All </a></th>
<th class="col-xs-2">#ID</th>
</tr>
</thead>
<tbody>
<tr>
<td><input type="checkbox" name="order333"/></td>
<td>{{ order.id }}</td>
</tr>
<tr>
<td><input type="checkbox" name="order334"/></td>
<td>{{ order.id }}</td>
</tr>
</tbody>
</table>
시험:
$(".table-datatable .select_all").on('click', function () {
$("input[name^='order']").prop('checked', function (i, val) {
return !val;
});
});
가장 기본적인 예는 다음과 같습니다.
// get DOM elements
var checkbox = document.querySelector('input'),
button = document.querySelector('button');
// bind "cilck" event on the button
button.addEventListener('click', toggleCheckbox);
// when clicking the button, toggle the checkbox
function toggleCheckbox(){
checkbox.checked = !checkbox.checked;
};
<input type="checkbox">
<button>Toggle checkbox</button>
내 생각에, 정상적인 변종을 제안한 가장 오른쪽 사람은 GigolNet Gigolashvili이지만 더 아름다운 변종을 제안하고 싶습니다. 확인해 봐
$(document).on('click', '.fieldWrapper > label', function(event) {
event.preventDefault()
var n = $( event.target ).parent().find('input:checked').length
var m = $( event.target ).parent().find('input').length
x = n==m? false:true
$( event.target ).parent().find('input').each(function (ind, el) {
// $(el).attr('checked', 'checked');
this.checked = x
})
})
이 코드는 웹 템플릿에 사용 된 토글 스위치 애니메이터를 클릭하면 확인란을 토글합니다. 코드에서 사용 가능한 ".onoffswitch-label"을 바꾸십시오. "checkboxID"는 여기서 토글 된 확인란입니다.
$('.onoffswitch-label').click(function () {
if ($('#checkboxID').prop('checked'))
{
$('#checkboxID').prop('checked', false);
}
else
{
$('#checkboxID').prop('checked', true);
}
});