Я хотел бы сделать что-то подобное, чтобы отметить checkbox
, используя jQuery :
$(".myCheckBox").checked(true);
или
$(".myCheckBox").selected(true);
Такое существует?
Я хотел бы сделать что-то подобное, чтобы отметить checkbox
, используя jQuery :
$(".myCheckBox").checked(true);
или
$(".myCheckBox").selected(true);
Такое существует?
Используйте .prop()
:
$('.myCheckbox').prop('checked', true);
$('.myCheckbox').prop('checked', false);
Если вы работаете только с одним элементом, вы всегда можете просто получить доступ к базовому HTMLInputElement
и изменить его .checked
свойство4051254920
$('.myCheckbox')[0].checked = true;
$('.myCheckbox')[0].checked = false;
Преимущество использования методов .prop()
и .attr()
вместо этого заключается в том, что они будут работать со всеми совпадающими элементами.
Метод .prop()
недоступен, поэтому вам нужно использовать .attr()
.
$('.myCheckbox').attr('checked', true);
$('.myCheckbox').attr('checked', false);
Обратите внимание, что это подход, используемый модульными тестами jQuery до версии 1.6, и предпочтительнее использовать $('.myCheckbox').removeAttr('checked');
, поскольку последний, если изначально был установлен флажок, изменит поведение вызова на .reset()
в любой форме, которая его содержит - тонкое, но, вероятно, нежелательное изменение поведения.
Для большего контекста неполное обсуждение изменений в обработке атрибута / свойства checked
при переходе с 1.5.x на 1.6 можно найти в примечаниях к выпуску версии 1.6 и Атрибуты и свойства в разделе .prop()
документации.
Да, это установка значения атрибута, и снимите флажок, удалив атрибут. Я обновил свой ответ, чтобы показать это.
@Xian удаление отмеченного атрибута делает невозможным сброс формы
Проблема здесь в том, что вам нужно что-то, что работает для обеих версий. В этом случае вы можете использовать плагин. :) Спасибо за обновление!
В качестве побочного примечания, jQuery 1.6.1 должен исправить проблему, о которой я упоминал, поэтому мы можем технически все еще вернуться к использованию $ (...). Prop (...)
«Если вы работаете только с одним элементом, всегда будет быстрее всего использовать DOMElement.checked = true
». Но это было бы ничтожно мало, потому что это всего лишь один элемент ...
Как говорит Тайлер, это незначительное улучшение производительности. Для меня кодирование с использованием общего API делает его более читабельным, чем смешивание собственного API и jQuery API. Я бы придерживался jQuery.
@TylerCrompton - Конечно, дело не только в производительности, но выполнение $(element).prop('checked')
- это пустая трата набора текста. element.checked
существует и должен использоваться в тех случаях, когда у вас уже есть element
Как я могу увидеть prop () в исходном коде. Я попытался выполнить поиск и нашел эти экземпляры, но ничего, что мне показалось правильным: pix.realquadrant.com/jquery-prop
Если вы думаете об использовании vanilla js вместо jquery, есть решение:
//for one element:
document.querySelector('.myCheckBox').checked = true /* or false */ //will select the first matched element
//for multiple elements:
for (const checkbox of document.querySelectorAll('.myCheckBox')) {
checkbox.checked = true //or false
}
Вы можете сделать это, если у вас есть идентификатор для проверки
document.getElementById('ElementId').checked = false
И это для снятия отметки
document.getElementById('ElementId').checked = true
Решение JavaScript также может быть простым и с меньшими накладными расходами:
document.querySelectorAll('.myCheckBox').forEach(x=> x.checked=1)
document.querySelectorAll('.myCheckBox').forEach(x=> x.checked=1)
checked A: <input type="checkbox" class="myCheckBox"><br/>
unchecked: <input type="checkbox"><br/>
checked B: <input type="checkbox" class="myCheckBox"><br/>
Это относится к флажку «Проверить / снять» с помощью JavaScript (jQuery или Vanilla)? или JavaScript проверять несколько флажков, а не этого вопроса jQuery.
Вы можете использовать: .prop (propertyName) - версия добавлена: 1.6
p {margin: 20px 0 0;}
b {color: red;}
label {color: red;}
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<input id="check1" type="checkbox" checked="checked">
<label for="check1">Check here</label>
<p></p>
<script>
$( "input" ).change(function() {
var $input = $( this );
$( "p" ).html(
"The .attr( \"checked\" ): <b>" + $input.attr( "checked" ) + "</b><br>" +
"The .prop( \"checked\" ): <b>" + $input.prop( "checked" ) + "</b><br>" +
"The .is( \":checked\" ): <b>" + $input.is( ":checked" ) + "</b>" );
}).change();
</script>
</body>
</html>
В вашем .html файле
<input type="checkbox" (change)="toggleEditable($event)">
В вашем файле .ts
toggleEditable(event) {
if ( event.target.checked ) {
this.contentEditable = true;
}
}
В вашем .html файле
<input type="checkbox" [(ngModel)]="isChecked" (change)="checkAction(isChecked ? 'Action1':'Action2')" />
Если вы используете .prop('checked', true|false)
и не изменили флажок , вам нужно добавить trigger('click')
следующим образом:
// Check
$('#checkboxF1').prop( "checked", true).trigger('click');
// Uncheck
$('#checkboxF1').prop( "checked", false).trigger('click');
так рада, что нашла это. Спасибо! почти сошла с ума !!
Проверить состояние флажка можно разными способами с помощью JavaScript. Вы можете увидеть ниже.
Первый способ -
$('.myCheckbox').prop('checked', true);
Второй способ -
$('.myCheckbox').attr('checked', true);
Третий метод (для проверки условия, если флажок установлен или нет) - $('.myCheckbox').is(':checked')
if($('jquery_selector').is(":checked")){
//somecode
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
При ответе желательно дать какое-то объяснение, ПОЧЕМУ именно ваш ответ.
Если вы используете Bootstrap (возможно, не подозревая) ...
$('#myCheckbox').bootstrapToggle('on')
$('#myCheckbox').bootstrapToggle('off')
Это может кому-то помочь.
HTML5
<input id="check_box" type="checkbox" onclick="handleOnClick()">
JavaScript.
function handleOnClick(){
if($("#check_box").prop('checked'))
{
console.log("current state: checked");
}
else
{
console.log("current state: unchecked");
}
}
Как сказал @ livefree75:
jQuery 1.5.x и ниже
Вы также можете расширить объект $ .fn новыми методами:
(function($) {
$.fn.extend({
check : function() {
return this.filter(":radio, :checkbox").attr("checked", true);
},
uncheck : function() {
return this.filter(":radio, :checkbox").removeAttr("checked");
}
});
}(jQuery));
Но в новых версиях jQuery мы должны использовать что-то вроде этого:
jQuery 1.6+
(function($) {
$.fn.extend({
check : function() {
return this.filter(":radio, :checkbox").prop("checked", true);
},
uncheck : function() {
return this.filter(":radio, :checkbox").prop("checked",false);
}
});
}(jQuery));
Тогда вы можете просто сделать:
$(":checkbox").check();
$(":checkbox").uncheck();
Для jQuery 1.6+
$('.myCheckbox').prop('checked', true);
$('.myCheckbox').prop('checked', false);
Для jQuery 1.5.x и ниже
$('.myCheckbox').attr('checked', true);
$('.myCheckbox').attr('checked', false);
Чтобы проверить,
$('.myCheckbox').removeAttr('checked');
Когда вы установили флажок, например:
$('.className').attr('checked', 'checked')
этого может быть недостаточно. Вы также должны вызвать функцию ниже:
$('.className').prop('checked', 'true')
Особенно после того, как вы удалили атрибут "флажок".
Если вы используете ASP.NET MVC, сгенерируйте много флажков, а затем задайте , чтобы выбрать / отменить выбор всех с помощью с помощью JavaScript, вы можете сделать следующее.
>HTML
@foreach (var item in Model)
{
@Html.CheckBox(string.Format("ProductId_{0}", @item.Id), @item.IsSelected)
}
JavaScript
function SelectAll() {
$('input[id^="ProductId_"]').each(function () {
$(this).prop('checked', true);
});
}
function UnselectAll() {
$('input[id^="ProductId_"]').each(function () {
$(this).prop('checked', false);
});
}
Зачем здесь нужен каждый?
Предполагая, что вопрос ...
Помните, что в типичном наборе флажков все теги ввода имеют одинаковое имя, они отличаются атрибутом value
: для каждого ввода набора нет идентификатора.
Ответ Сиана можно расширить с помощью более конкретного селектора , используя следующую строку кода:
$("input.myclass[name='myname'][value='the_value']").prop("checked", true);
Это, вероятно, самое короткое и простое решение:
$(".myCheckBox")[0].checked = true;
или
$(".myCheckBox")[0].checked = false;
Еще короче:
$(".myCheckBox")[0].checked = !0;
$(".myCheckBox")[0].checked = !1;
Здесь также a jsFiddle.
Вы можете попробовать следующее:
$('input[name="activity[task_state]"]').val("specify the value you want to check ")
Чтобы установить и снять флажок
$('.myCheckbox').prop('checked', true);
$('.myCheckbox').prop('checked', false);
- 1; это не добавляет никакой ценности уже раздутому потоку. Код здесь точно такой же, как принятый ответ.
Другое возможное решение:
var c = $("#checkboxid");
if (c.is(":checked")) {
$('#checkboxid').prop('checked', false);
} else {
$('#checkboxid').prop('checked', true);
}
Обычный JavaScript очень прост и намного меньше накладных расходов:
var elements = document.getElementsByClassName('myCheckBox');
for(var i = 0; i < elements.length; i++)
{
elements[i].checked = true;
}
@MarkAmery В принятом ответе не рассматривается, как это сделать без jQuery. Мой ответ добавляет дополнительную пользу к принятому ответу.
Для всего:
$("#checkAll").click(function(){
$(".somecheckBoxes").prop('checked',$(this).prop('checked')?true:false);
});
Вот код и демонстрация того, как установить несколько флажков ...
http://jsfiddle.net/tamilmani/z8TTt/
$("#check").on("click", function () {
var chk = document.getElementById('check').checked;
var arr = document.getElementsByTagName("input");
if (chk) {
for (var i in arr) {
if (arr[i].name == 'check') arr[i].checked = true;
}
} else {
for (var i in arr) {
if (arr[i].name == 'check') arr[i].checked = false;
}
}
});
- 1; смешивание селекторов jQuery, таких как $("#check")
, с необработанными вызовами DOM API, такими как document.getElementsByTagName("input")
, кажется мне неэлегантным, особенно с учетом того, что циклов for
здесь можно избежать, используя .prop()
. Тем не менее, это еще один поздний ответ, который не добавляет ничего нового.
$('controlCheckBox').click(function(){
var temp = $(this).prop('checked');
$('controlledCheckBoxes').prop('checked', temp);
});
- 1 за то, что это ответ, состоящий только из кода, без прямого ответа на вопрос и добавления ничего, чего еще не было в других ответах.
В jQuery,
if($("#checkboxId").is(':checked')){
alert("Checked");
}
или
if($("#checkboxId").attr('checked')==true){
alert("Checked");
}
В JavaScript,
if (document.getElementById("checkboxID").checked){
alert("Checked");
}
Это не отвечает на вопрос.
Этот ответ устарел, потому что в нем используется .attr
вместо .prop
.
Помните об утечках памяти в Internet Explorer до Internet Explorer 9, поскольку в документации jQuery указано:
В Internet Explorer до версии 9 использование .prop () для установки DOM свойство элемента к чему-либо, кроме простого примитивного значения (число, строка или логическое значение) может вызвать утечку памяти, если свойство не удаляется (с использованием .removeProp ()) до удаления элемента DOM из документа. Безопасная установка значений для объектов DOM без памяти утечки, используйте .data ().
Это не имеет значения, поскольку во всех (правильных) ответах используется .prop('checked',true)
.
Не уверен, что понял ваш комментарий. Он все еще существует в документации jQuery. Вы хотите сказать, что в IE <9 нет утечки памяти?
В этом случае утечки памяти нет, поскольку мы устанавливаем для него простое примитивное значение (Boolean).
$(".myCheckBox").prop("checked","checked");
Этот ответ устарел, поскольку в нем используется .attr
вместо .prop
.
Чтобы установить флажок с помощью jQuery 1.6 или выше, просто сделайте следующее:
checkbox.prop('checked', true);
Чтобы снять отметку, используйте:
checkbox.prop('checked', false);
Вот что мне нравится использовать для переключения флажка с помощью jQuery:
checkbox.prop('checked', !checkbox.prop('checked'));
Если вы используете jQuery 1.5 или ниже:
checkbox.attr('checked', true);
Чтобы снять отметку, используйте:
checkbox.attr('checked', false);
Вот полный ответ с использованием jQuery
Тестирую, работает 100%: D
// when the button (select_unit_button) is clicked it returns all the checed checkboxes values
$("#select_unit_button").on("click", function(e){
var arr = [];
$(':checkbox:checked').each(function(i){
arr[i] = $(this).val(); // u can get id or anything else
});
//console.log(arr); // u can test it using this in google chrome
});
Если вы используете мобильный телефон, и вы хотите, чтобы интерфейс обновлялся и показывал, что флажок снят, используйте следующее:
$("#checkbox1").prop('checked', false).checkboxradio("refresh");
Вот способ сделать это без jQuery
function addOrAttachListener(el, type, listener, useCapture) {
if (el.addEventListener) {
el.addEventListener(type, listener, useCapture);
} else if (el.attachEvent) {
el.attachEvent("on" + type, listener);
}
};
addOrAttachListener(window, "load", function() {
var cbElem = document.getElementById("cb");
var rcbElem = document.getElementById("rcb");
addOrAttachListener(cbElem, "click", function() {
rcbElem.checked = cbElem.checked;
}, false);
}, false);
<label>Click Me!
<input id="cb" type="checkbox" />
</label>
<label>Reflection:
<input id="rcb" type="checkbox" />
</label>
Попробуйте это:
$('#checkboxid').get(0).checked = true; //For checking
$('#checkboxid').get(0).checked = false; //For unchecking
Я не могу найти решение. Я всегда буду использовать:
if ($('#myCheckBox:checked').val() !== undefined)
{
//Checked
}
else
{
//Not checked
}
Это не отвечает на вопрос (вопрос касается установки , установлен ли флажок, а не определения, установлен ли флажок). Это также довольно уродливый способ определить, установлен ли флажок (с одной стороны, вы используете неочевидный факт, что .val()
всегда будет возвращать undefined
при вызове 0 элементов, чтобы определить, что объект jQuery пусто, вместо этого вы можете просто проверить его .length
) - см. coderhelper.com/questions/901712/… для более удобочитаемых подходов.
Если вы используете PhoneGap для разработки приложений, и у вас есть значение на кнопке, которое вы хотите отобразить мгновенно, не забудьте сделать это
$('span.ui-[controlname]',$('[id]')).text("the value");
Я обнаружил, что без диапазона интерфейс не будет обновляться, что бы вы ни делали.
Мне не удалось заставить его работать, используя:
$("#cb").prop('checked', 'true');
$("#cb").prop('checked', 'false');
И истина, и ложь установят флажок. Для меня сработало:
$("#cb").prop('checked', 'true'); // For checking
$("#cb").prop('checked', ''); // For unchecking
Разве это не должно быть true
и false
, а не 'true'
и 'false'
?
Это «не сработало», потому что 'false'
было преобразовано в логическое значение, что привело к true
- пустая строка оценивается как false
, поэтому она «сработала». См. эту скрипку для примера того, что я имею в виду.
@ chris97ong Я отменил ваше изменение; когда кто-то говорит: «Не используйте приведенный ниже код, потому что он не работает», исправляя этот код, оставляя комментарий о том, что он не работает, вредно, особенно когда он нарушает объяснение в комментарии , почему код не работает. Тем не менее, этот ответ все еще несколько запутан и заслуживает отрицательной оценки по причинам, указанным tpower и ShadowWizard.
используйте значения «истина» и «ложь» для логических значений, не используйте «истина» или «ложь» (строки).
Вот код для отмеченного и снятого с помощью кнопки:
var set=1;
var unset=0;
jQuery( function() {
$( '.checkAll' ).live('click', function() {
$( '.cb-element' ).each(function () {
if(set==1){ $( '.cb-element' ).attr('checked', true) unset=0; }
if(set==0){ $( '.cb-element' ).attr('checked', false); unset=1; }
});
set=unset;
});
});
Обновление: вот тот же блок кода, использующий новый метод Jquery 1.6+ prop, который заменяет attr:
var set=1;
var unset=0;
jQuery( function() {
$( '.checkAll' ).live('click', function() {
$( '.cb-element' ).each(function () {
if(set==1){ $( '.cb-element' ).prop('checked', true) unset=0; }
if(set==0){ $( '.cb-element' ).prop('checked', false); unset=1; }
});
set=unset;
});
});
Этот ответ устарел, поскольку в нем используется .attr
вместо .prop
.
Мы можем использовать elementObject
с jQuery для проверки атрибута:
$(objectElement).attr('checked');
Мы можем использовать это для всех версий jQuery без каких-либо ошибок.
Обновление: JQuery 1.6+ имеет новый метод prop, который заменяет attr, например:
$(objectElement).prop('checked');
Этот ответ устарел, поскольку в нем используется .attr
вместо .prop
.
Это правильный способ установки и снятия флажков с помощью jQuery, поскольку это кроссплатформенный стандарт, а разрешает репосты форм.
$('.myCheckBox').each(function(){ this.checked = true; });
$('.myCheckBox').each(function(){ this.checked = false; });
Делая это, вы используете стандарты JavaScript для установки и снятия флажков, поэтому любой браузер, который правильно реализует свойство "checked" элемента checkbox, будет безупречно запускать этот код. Этот должен быть всеми основными браузерами, но я не могу протестировать до Internet Explorer 9.
Проблема (jQuery 1.6):
Когда пользователь нажимает на флажок, этот флажок перестает реагировать на изменения атрибута "отмечен".
Вот пример атрибута checkbox, который не выполняет задание после того, как кто-то установил флажок (это происходит в Chrome).
Решение:
Используя свойство JavaScript "checked" в элементах DOM, мы можем решить проблему напрямую, вместо того, чтобы пытаться манипулировать DOM для выполнения того, что мы хотим, чтобы он делать.
Этот плагин изменяет отмеченное свойство любых элементов, выбранных jQuery, и успешно проверяет и снимает флажки при любых обстоятельствах. Таким образом, хотя это может показаться чрезмерным решением, оно улучшит пользовательский интерфейс вашего сайта и поможет предотвратить разочарование пользователей.
(function( $ ) {
$.fn.checked = function(value) {
if(value === true || value === false) {
// Set the value of the checkbox
$(this).each(function(){ this.checked = value; });
}
else if(value === undefined || value === 'toggle') {
// Toggle the checkbox
$(this).each(function(){ this.checked = !this.checked; });
}
return this;
};
})( jQuery );
В качестве альтернативы, если вы не хотите использовать плагин, вы можете использовать следующие фрагменты кода:
// Check
$(':checkbox').prop('checked', true);
// Un-check
$(':checkbox').prop('checked', false);
// Toggle
$(':checkbox').prop('checked', function (i, value) {
return !value;
});
В вашем первом примере JSFiddle вы должны использовать removeAttr('checked')
, а не attr('checked', false)
@DanielXMoore, вы обходите стороной вопрос. Пример должен был показать, что после того, как пользователь щелкнул флажок, браузер больше не реагирует на изменения атрибутов checked
, независимо от метода, используемого для их изменения.
@ChristopherHarris Хорошо, ты прав, я это пропустил. Начиная с jQuery 1.6, не следует ли вам использовать метод .prop? $('.myCheckBox').prop('checked', true)
Таким образом, он будет автоматически применяться ко всему набору совпадающих элементов (хотя только при настройке получение по-прежнему будет только первым)
да. prop
определенно является подходящим способом установки атрибутов элемента.
@ChristopherHarris, я добавил в плагин то, что мне нужно, чтобы обеспечить некоторую гибкость параметров. Это упростило встроенную обработку без преобразования типа. Особенно из разрозненных баз данных с «идеями» о том, что такое «правда». Скрипка: jsfiddle.net/Cyberjetx/vcp96
Чтобы установить флажок, используйте
$('.myCheckbox').attr('checked',true);
или
$('.myCheckbox').attr('checked','checked');
, а чтобы снять флажок, всегда следует устанавливать значение false:
$('.myCheckbox').attr('checked',false);
Если вы сделаете
$('.myCheckbox').removeAttr('checked')
он удаляет атрибут полностью, поэтому вы не сможете сбросить форму.
ПЛОХОЙ ДЕМО jQuery 1.6. Я думаю, что это не работает. Для 1.6 я собираюсь сделать новый пост об этом.
НОВАЯ РАБОЧАЯ ДЕМО jQuery 1.5.2 работает в Chrome.
Обе демонстрации используют
$('#tc').click(function() {
if ( $('#myCheckbox').attr('checked')) {
$('#myCheckbox').attr('checked', false);
} else {
$('#myCheckbox').attr('checked', 'checked');
}
});
Это неточно. установка атрибута 'checked' на '' , а не снимет флажки хотя бы в chrome.
@xixonia Я тестировал, прежде чем опубликовать вашу скрипку, не работает, потому что вы не изменили меню слева, чтобы включить jquery
@xixonia еще раз спасибо. Кажется, это не работает так же в jquery 1.6, см. примечание выше, спасибо за добавление вашего решения.
mcgralim - в 1.6 стало еще проще .... $(".mycheckbox").prop("checked", true/false)
@gnarf это здорово, но теперь мне придется изменить это во всем моем коде 8 ^ (
@mcgrailm - он все еще не выпущен, но мы, возможно, добавим некоторую обратную совместимость для .attr()
с логическими атрибутами - хотя я бы хотел, чтобы мы этого не делали - Читайте: forum.jquery.com/topic/prop-attr -rewrite-again
@Blazemonger, вы имеете в виду, что используете .prop, а не .attr?
Ваш ответ обещал новое актуальное решение, которого вы никогда не предоставляли. .attr
был неправильным, подходом к этой проблеме уже более двух лет.
В то время я опубликовал исправленный ответ, но это было 4 года назад, чувак. Я не обновляю все свои сообщения, и я уверен, что большинство людей этого не делают. Вы голосовали против поста четырехлетней давности, в котором говорилось, что он устарел, ну да
@DaveRager в этом случае, однако, устаревшие ответы не только устарели, но и полностью избыточны, поскольку принятый ответ уже отлично покрывает их содержимое. Нет смысла обновлять устаревший ответ, если впоследствии он все еще не пригодится.
@MarkAmery, вы упомянули, что мой пост ничего не добавил во время публикации, но это точно. Если вы посмотрите историю принятого ответа, вы обнаружите, что они предлагают удалить элемент. Из-за чего невозможно сбросить форму, поэтому я и опубликовал ее для начала.
@mcgrailm Я пошел дальше и изменил принятый ответ в свете ваших замечаний. Если вы хотите взглянуть на него и проверить, хорошо ли он выглядит в текущем состоянии, я буду признателен. Еще раз приношу свои извинения за резкую критику, которая, по крайней мере частично, была в высшей степени ошибочной.
Это выбирает элементы, которые имеют указанный атрибут со значением, содержащим данную подстроку «ckbItem»:
$('input[name *= ckbItem]').prop('checked', true);
Он выберет все элементы, содержащие ckbItem в его атрибуте name.
Вы также можете расширить объект $ .fn новыми методами:
(function($) {
$.fn.extend({
check : function() {
return this.filter(":radio, :checkbox").attr("checked", true);
},
uncheck : function() {
return this.filter(":radio, :checkbox").removeAttr("checked");
}
});
}(jQuery));
Тогда вы можете просто сделать:
$(":checkbox").check();
$(":checkbox").uncheck();
Или вы можете дать им более уникальные имена, такие как mycheck () и myuncheck (), если вы используете какую-то другую библиотеку, которая использует эти имена.
@ livfree75 удаление отмеченного атрибута делает невозможным сброс формы
Этот ответ устарел, поскольку в нем используется .attr
вместо .prop
.
$("#mycheckbox")[0].checked = true;
$("#mycheckbox").attr('checked', true);
$("#mycheckbox").click();
Последний вызовет событие щелчка для флажка, остальные - нет. Поэтому, если у вас есть собственный код в событии onclick для флажка, который вы хотите активировать, используйте последний.
верхний не удастся ... check не является членом объекта jquery
Этот ответ устарел, потому что в нем используется .attr
вместо .prop
.
IMO событие click
ненадежно в Firefox и Edge.
Использование:
$(".myCheckbox").attr('checked', true); // Deprecated
$(".myCheckbox").prop('checked', true);
И если вы хотите проверить, установлен ли флажок:
$('.myCheckbox').is(':checked');
также $ (selector) .checked to check проверяется
Я попробовал этот точный код, и он не сработал для меня в случае флажка «выбрать все / не выбрать ничего», который должен проверять и снимать все флажки, а также проверять их состояние. Вместо этого я попробовал ответить @Christopher Harris, и это помогло.
Зачем использовать "form #mycheckbox" вместо просто "#mycheckbox"? Идентификатор уже уникален во всем документе, его проще и быстрее выбрать напрямую.
@YuriAlbuquerque, это был пример. вы можете использовать любой селектор, какой захотите.
$ (selector) .checked не работает. В jQuery нет "проверенного" метода.
Вы можете сделать
$('.myCheckbox').attr('checked',true) //Standards compliant
или
$("form #mycheckbox").attr('checked', true)
Если у вас есть собственный код в событии onclick для флажка, который вы хотите активировать, используйте его вместо этого:
$("#mycheckbox").click();
Вы можете снять флажок, полностью удалив атрибут:
$('.myCheckbox').removeAttr('checked')
Вы можете установить все флажки следующим образом:
$(".myCheckbox").each(function(){
$("#mycheckbox").click()
});
вы также можете использовать $ ("# myTable input: checkbox"). each (...);
Вы также можете пойти $(".myCheckbox").click()
@Michah удаление отмеченного атрибута делает невозможным сброс формы
Этот ответ устарел, поскольку в нем используется .attr
вместо .prop
.
$("#mycheckbox").click();
работал у меня, так как я тоже слушал событие изменения, а .attr
& .prop
не запускал событие изменения.
Более конкретный (и очень полезный!) Вопрос «Как мне проверить элемент в установленном флажке ПО ЗНАЧЕНИЮ?», Я думаю, мы также можем обсудить здесь, и я разместил ответ ниже.
Проверьте другие способы сделать это с помощью jQuery здесь coderhelper.com/a/22019103/1868660
Если вам нужно инициировать событие onchange, это
$("#mycheckbox").click();
«Проверка чего-либо» предполагает тестирование, поэтому я думаю, что «Установить флажок» - более понятный и лучший заголовок.
prop (); функция - прекрасный ответ. См. Определение функции - api.jquery.com/prop
attr () не работает с IE. использование prop () - лучший вариант
$(".myCheckBox").prop("checked", true)