Установка флажка для флажка с помощью jQuery

Я хотел бы сделать что-то вроде этого, чтобы поставить галочку на checkbox с помощью jQuery:

$(".myCheckBox").checked(true);

или же

$(".myCheckBox").selected(true);

Такое существует?

Более конкретный (и очень полезный!) Вопрос «Как мне проверить элемент в установленном флажке ПО ЗНАЧЕНИЮ?», Я думаю, мы также можем обсудить здесь, и я разместил ответ ниже.

Peter Krauss 09.03.2012 16:36

Проверьте другие способы сделать это с помощью jQuery здесь stackoverflow.com/a/22019103/1868660

Subodh Ghulaxe 25.02.2014 19:46

Если вам нужно инициировать событие onchange, это $("#mycheckbox").click();

HumanInDisguise 11.05.2015 17:06

«Проверка чего-либо» предполагает тестирование, поэтому я думаю, что «Установить флажок» - более понятный и лучший заголовок.

Alireza 12.05.2015 20:26

prop (); функция - прекрасный ответ. См. Определение функции - api.jquery.com/prop

yogihosting 23.05.2016 18:01

attr () не работает с IE. использование prop () - лучший вариант

divine 26.04.2017 13:52
$(".myCheckBox").prop("checked", true)
Tal 20.09.2019 10:56
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
4 284
7
3 418 815
42
Перейти к ответу Данный вопрос помечен как решенный

Ответы 42

Ты можешь сделать

$('.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 (...);

Chris Brandsma 09.01.2009 01:37

Еще можно пойти $(".myCheckbox").click()

RobertPitt 20.09.2010 15:49

@Michah удаление отмеченного атрибута делает невозможным сброс формы

mcgrailm 23.03.2011 18:32

Этот ответ устарел, потому что он использует .attr вместо .prop.

Blazemonger 21.01.2014 18:15
$("#mycheckbox").click(); работал у меня, так как я тоже слушал событие изменения, а .attr и .prop не запускали событие изменения.
Damodar Bashyal 01.05.2017 09:30
Ответ принят как подходящий

Современный jQuery

Используйте .prop():

$('.myCheckbox').prop('checked', true);
$('.myCheckbox').prop('checked', false);

DOM API

Если вы работаете только с одним элементом, вы всегда можете просто получить доступ к базовому HTMLInputElement и изменить его свойство .checked:

$('.myCheckbox')[0].checked = true;
$('.myCheckbox')[0].checked = false;

Преимущество использования методов .prop() и .attr() вместо этого заключается в том, что они будут работать со всеми совпадающими элементами.

jQuery 1.5.x и ниже

Метод .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() документация.

Это получение значения или установка значения? Как мне снять галочку?

tpower 09.01.2009 01:40

Да, это установка значения атрибута, и снимите флажок, удалив атрибут. Я обновил свой ответ, чтобы показать это.

Xian 09.01.2009 01:48

@Xian удаление отмеченного атрибута делает невозможным сброс формы

mcgrailm 23.03.2011 18:27

Проблема здесь в том, что вам нужно что-то, что работает для обеих версий. В этом случае вы можете использовать плагин. :) Спасибо за обновления!

cwharris 07.05.2011 01:12

В качестве побочного примечания, jQuery 1.6.1 должен исправить проблему, о которой я упоминал, поэтому мы можем технически все еще вернуться к использованию $ (...). Prop (...)

cwharris 14.05.2011 00:08

«Если вы работаете только с одним элементом, всегда будет быстрее всего использовать DOMElement.checked = true». Но это было бы ничтожно мало, потому что это всего лишь один элемент ...

Tyler Crompton 30.03.2012 13:32

Как говорит Тайлер, это незначительное улучшение производительности. Для меня кодирование с использованием общего API делает его более читабельным, чем смешивание собственного API и jQuery API. Я бы придерживался jQuery.

Katie Kilian 04.05.2012 20:28

не уверен, что это применимо и к jQuery, но на всякий случай stackoverflow.com/questions/10650233/…

ajax333221 31.05.2012 23:56

не забудьте поставить # перед идентификатором.

user1382306 11.09.2012 19:28

@TylerCrompton - Конечно, дело не только в производительности, но создание $(element).prop('checked') - это пустая трата набора текста. element.checked существует и должен использоваться в тех случаях, когда у вас уже есть element.

gnarf 02.10.2012 03:35

Ответ bchhun более правильный, метод .prop не повлияет на элемент, отправленный при отправке формы

srcspider 15.11.2012 13:35

в jQuery 1.9 вы ДОЛЖНЫ использовать prop ('checked', bool) из-за изменений в поведении: jquery.com/upgrade-guide/1.9

Simon_Weaver 01.02.2013 00:25
$('.myCheckbox').removeAttr('checked'); не будет работать после того, как пользователь установит флажок. Вместо этого посмотрите мой ответ stackoverflow.com/a/5916151/696056
cwharris 13.03.2013 23:22

Если что-то не переключается так, как вы хотите, особенно в Chrome (все идет хорошо в FF и даже IE7,8), используйте собственный доступ $('.myCheckbox')[0].checked=true и взгляните на этот: stackoverflow.com/q/5907645#answer-5907877

Frank Nocke 12.09.2013 21:12

UPD: для проверки ввода флажка через jQuery используйте метод .is () с селектором ': checked' - чтобы проверить все описанные выше методы и зависимость от версии jQuery, см .: jsfiddle.net/sF8Kk

dr.dimitru 21.10.2013 21:15

Имя этого свойства легче понять, если вы поймете, что «отмечен» - это американское слово «отмечен». (Это также этимология термина «флажок».) (Годы, которые я провел в США, помогли мне разобраться во многих номенклатурных причудах в языках программирования.)

Michael Scheper 05.04.2015 03:23

Изменение значения игнорировало обработчик .change(...), который я настроил, я только что добавил: $(this).attr('checked',!this.checked).change()

Pluto 28.04.2016 22:38

Наконец, после получасового поиска в Google все оказалось так просто (на самом деле я знал, что это должно быть просто). Я пытался отменить состояние флажка внутри события изменения, если пользователь решил отменить операцию с помощью диалогового окна с запросом. Это работает без event.preventDefault() и других вещей, которые люди предложили в других ответах.

Alisson 07.07.2016 04:30

Примечание: это не вызывает событие change. При необходимости добавьте .trigger('change')

the_nuts 16.04.2017 21:30

Использовать:

$(".myCheckbox").attr('checked', true); // Deprecated
$(".myCheckbox").prop('checked', true);

И если вы хотите проверить, установлен ли флажок:

$('.myCheckbox').is(':checked');

также $ (selector) .checked to check отмечен

eomeroff 03.05.2011 03:56

Я попробовал этот точный код, и он не сработал для меня в случае флажка «выбрать все / не выбрать ничего», который должен проверять и снимать все флажки, а также проверять их состояние. Вместо этого я попробовал ответить @Christopher Harris, и это помогло.

JD Smith 28.03.2013 05:26

Зачем использовать "form #mycheckbox" вместо просто "#mycheckbox"? Идентификатор уже уникален во всем документе, его проще и быстрее выбрать напрямую.

YuriAlbuquerque 11.10.2013 19:27

@YuriAlbuquerque, это был пример. вы можете использовать любой селектор, какой захотите.

bchhun 13.10.2013 04:14

$ (selector) .checked не работает. В jQuery нет "проверенного" метода.

SineSwiper 07.10.2015 19:42

@BrendanByrd Тем не менее, у объекта DOM есть свойство checked (без упаковки jQuery)

bchhun 13.10.2015 20:55
$("#mycheckbox")[0].checked = true;
$("#mycheckbox").attr('checked', true);
$("#mycheckbox").click();

Последний вызовет событие щелчка для флажка, остальные - нет. Поэтому, если у вас есть собственный код в событии onclick для флажка, который вы хотите активировать, используйте последний.

верхний не удастся ... check не является членом объекта jquery

redsquare 09.01.2009 03:20

Этот ответ устарел, потому что он использует .attr вместо .prop.

Blazemonger 21.01.2014 18:16

IMO событие click ненадежно в Firefox и Edge.

Vahid Amiri 31.08.2019 14:21

Вы также можете расширить объект $ .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 удаление отмеченного атрибута делает невозможным сброс формы

mcgrailm 23.03.2011 18:32

Этот ответ устарел, потому что он использует .attr вместо .prop.

Blazemonger 21.01.2014 18:16

Это выбирает элементы, которые имеют указанный атрибут со значением, содержащим данную подстроку «ckbItem»:

$('input[name *= ckbItem]').prop('checked', true);

Он выберет все элементы, содержащие ckbItem в атрибуте name.

Чтобы установить флажок, вы должны использовать

 $('.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.

cwharris 06.05.2011 09:58

@xixonia Я тестировал, прежде чем опубликовать вашу скрипку, не работает, потому что вы не изменили меню слева, чтобы включить jquery

mcgrailm 06.05.2011 22:44

@xixonia еще раз спасибо. Кажется, это не работает так же в jauery 1.6, см. примечание выше, спасибо за добавление вашего решения.

mcgrailm 07.05.2011 00:10

mcgralim - в 1.6 стало еще проще .... $(".mycheckbox").prop("checked", true/false)

gnarf 07.05.2011 00:11

@gnarf это здорово, но теперь мне придется изменить это во всем моем коде 8 ^ (

mcgrailm 07.05.2011 00:14

@mcgrailm - он все еще не выпущен, но мы можем добавить некоторую обратную совместимость для .attr() с логическими атрибутами - хотя я бы хотел, чтобы мы этого не делали - Читайте: forum.jquery.com/topic/prop-attr-rewrite-again

gnarf 07.05.2011 00:18

@Blazemonger, вы имеете в виду, что используете .prop, а не .attr?

mcgrailm 21.01.2014 18:20

Ваш ответ обещал новое актуальное решение, которого вы никогда не предоставляли. .attr был подходом неправильный к этой проблеме уже более двух лет.

Blazemonger 21.01.2014 18:25

В то время я опубликовал исправленный ответ, но это было 4 года назад, чувак. Я не обновляю все свои сообщения, и я уверен, что большинство людей этого не делают. Вы голосовали против поста четырехлетней давности, в котором говорилось, что он устарел, ну да

mcgrailm 21.01.2014 18:29

@DaveRager в этом случае, однако, устаревшие ответы не только устарели, но и полностью избыточны, поскольку принятый ответ уже отлично покрывает их содержимое. Нет смысла обновлять устаревший ответ, если впоследствии он все еще не пригодится.

Mark Amery 15.12.2014 02:43

@MarkAmery, вы упомянули, что мой пост ничего не добавил во время публикации, но это точно. Если вы посмотрите историю принятого ответа, вы обнаружите, что они предлагают удалить элемент. Из-за чего невозможно сбросить форму, поэтому я и опубликовал ее для начала.

mcgrailm 15.12.2014 17:50

@mcgrailm Я пошел дальше и изменил принятый ответ в свете ваших замечаний. Если вы хотите взглянуть на него и проверить, хорошо ли он выглядит в текущем состоянии, я буду признателен. Еще раз приношу свои извинения за резкую критику, которая, по крайней мере частично, была в высшей степени ошибочной.

Mark Amery 15.12.2014 19:54

Это правильный способ установки и снятия флажков с помощью jQuery, поскольку это кроссплатформенный стандарт, а будут разрешает репосты форм.

$('.myCheckBox').each(function(){ this.checked = true; });

$('.myCheckBox').each(function(){ this.checked = false; });

Делая это, вы используете стандарты JavaScript для установки и снятия флажков, поэтому любой браузер, который правильно реализует свойство "checked" элемента checkbox, будет безупречно запускать этот код. Это должен для всех основных браузеров, но я не могу протестировать его до Internet Explorer 9.

Проблема (jQuery 1.6):

Как только пользователь щелкает флажок, этот флажок перестает реагировать на изменения атрибута "checked".

Вот пример атрибута checkbox, который не выполняет работу после того, как кто-то установил флажок щелкнул (это происходит в Chrome).

Скрипка

Решение:

Используя свойство JavaScript "checked" в элементах ДОМ, мы можем решить проблему напрямую, вместо того, чтобы пытаться манипулировать 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)

Daniel X Moore 30.01.2012 11:00

@DanielXMoore, вы обходите стороной вопрос. Пример должен был показать, что после того, как пользователь щелкнул флажок, браузер больше не реагирует на изменения атрибутов checked, несмотря на метода, используемого для их изменения.

cwharris 30.01.2012 17:28

@ChristopherHarris Хорошо, ты прав, я это пропустил. Начиная с jQuery 1.6, не следует ли вам использовать метод .prop? $('.myCheckBox').prop('checked', true) Таким образом, он будет автоматически применяться ко всему набору совпадающих элементов (хотя только при настройке получение по-прежнему будет только первым)

Daniel X Moore 02.02.2012 05:45

Да. prop - определенно подходящий способ установки атрибутов элемента.

cwharris 02.02.2012 06:40

@ChristopherHarris, я добавил в плагин то, что мне нужно, чтобы обеспечить некоторую гибкость параметров. Это упростило встроенную обработку без преобразования типа. Особенно из разрозненных баз данных с «идеями» о том, что такое «правда». Рабочий пример: jsfiddle.net/Cyberjetx/vcp96

Joe Johnston 04.03.2014 07:59

@JoeJohnston В идеальном мире это не должно быть встроено в плагин. Вместо этого его следует преобразовать в значение true / false перед использованием с плагином. Что сказать, что база данных не считает «0» истинным? Все зависит от базы данных.

cwharris 08.03.2014 01:42

Мы можем использовать elementObject с jQuery для проверки атрибута:

$(objectElement).attr('checked');

Мы можем использовать это для всех версий jQuery без каких-либо ошибок.

Обновление: JQuery 1.6+ имеет новый метод prop, который заменяет attr, например:

$(objectElement).prop('checked');

Этот ответ устарел, потому что он использует .attr вместо .prop.

Blazemonger 21.01.2014 18:18

Вот код для отмеченного и снятого с помощью кнопки:

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.

Blazemonger 21.01.2014 18:18

Я не мог заставить его работать, используя:

$("#cb").prop('checked', 'true');
$("#cb").prop('checked', 'false');

И истина, и ложь установят флажок. Для меня сработало:

$("#cb").prop('checked', 'true'); // For checking
$("#cb").prop('checked', '');     // For unchecking

Разве это не должны быть true и false, а не 'true' и 'false'?

tpower 05.01.2012 19:34

Это «не сработало», потому что 'false' был преобразован в логическое значение, что привело к true - пустая строка оценивается как false, поэтому он «работал». См. эта рабочий пример, например, что я имею в виду.

Shadow The Vaccinated Wizard 24.06.2012 15:41

@ chris97ong Я отменил ваше изменение; когда кто-то говорит: «Не используйте приведенный ниже код, потому что он не работает», фиксация этот код, оставляя комментарий о том, что он не работает, вреден - особенно когда он нарушает объяснение в комментариях Зачем, код не не работает. Тем не менее, этот ответ все еще несколько запутан и заслуживает отрицательной оценки по причинам, указанным tpower и ShadowWizard.

Mark Amery 15.12.2014 21:46

используйте значения «истина» и «ложь» для логических значений, не используйте «истина» или «ложь» (строки).

Jone Polvora 22.02.2015 01:34

Если предположить, что вопрос в том ...

Как поставить галочку ПО СТОИМОСТИ?

Помните, что в типичном наборе флажков все теги ввода имеют одно и то же имя, они отличаются атрибутом value: для каждого ввода набора нет идентификатора.

Ответ Сианя можно расширить с помощью более конкретный селектор, используя следующую строку кода:

$("input.myclass[name='myname'][value='the_value']").prop("checked", true);

Если вы используете PhoneGap для разработки приложений, и у вас есть значение на кнопке, которое вы хотите отобразить мгновенно, не забудьте сделать это.

$('span.ui-[controlname]',$('[id]')).text("the value");

Я обнаружил, что без диапазона интерфейс не будет обновляться, что бы вы ни делали.

Я не могу найти решение. Я всегда буду использовать:

if ($('#myCheckBox:checked').val() !== undefined)
{
    //Checked
}
else
{
    //Not checked
}

Это не отвечает на вопрос (вопрос касается параметр, установлен ли флажок, а не определения, установлен ли флажок). Это также довольно уродливый способ определить, установлен ли флажок (с одной стороны, вы используете неочевидный факт, что .val() всегда будет возвращать undefined при вызове для элементов 0, чтобы определить, что объект jQuery пуст, когда вместо этого вы можете просто проверить его .length) - см. stackoverflow.com/questions/901712/… для более удобочитаемых подходов.

Mark Amery 15.12.2014 02:47

Попробуй это:

$('#checkboxid').get(0).checked = true;  //For checking

$('#checkboxid').get(0).checked = false; //For unchecking

Вот способ сделать это без 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>

Если вы используете мобильный телефон и хотите, чтобы интерфейс обновлялся и показывал, что флажок снят, используйте следующее:

$("#checkbox1").prop('checked', false).checkboxradio("refresh");

Вот полный ответ используя 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.info(arr); // u can test it using this in google chrome
    });

Чтобы установить флажок с помощью 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);
$(".myCheckBox").prop("checked","checked");

Этот ответ устарел, потому что он использует .attr вместо .prop.

Blazemonger 21.01.2014 18:21

Помните об утечках памяти в Internet Explorer до Интернет-технологии, так как В документации jQuery указано:

In Internet Explorer prior to version 9, using .prop() to set a DOM element property to anything other than a simple primitive value (number, string, or boolean) can cause memory leaks if the property is not removed (using .removeProp()) before the DOM element is removed from the document. To safely set values on DOM objects without memory leaks, use .data().

Это не имеет значения, поскольку все (правильные) ответы используют .prop('checked',true).

Blazemonger 21.01.2014 18:19

Не уверен, что понял ваш комментарий. Он все еще существует в документации jQuery. Вы хотите сказать, что в IE <9 нет утечки памяти?

naor 22.01.2014 00:53

В этом случае утечки памяти нет, поскольку мы устанавливаем находятся на простое примитивное значение (Boolean).

Blazemonger 22.01.2014 00:56

В jQuery

if ($("#checkboxId").is(':checked')){
    alert("Checked");
}

или же

if ($("#checkboxId").attr('checked')==true){
    alert("Checked");
}

В JavaScript

if (document.getElementById("checkboxID").checked){
    alert("Checked");
}

Это не отвечает на вопрос.

Samuel Liew 10.06.2013 17:20

Этот ответ устарел, потому что он использует .attr вместо .prop.

Blazemonger 21.01.2014 18:20
$('controlCheckBox').click(function(){
    var temp = $(this).prop('checked');
    $('controlledCheckBoxes').prop('checked', temp);
});

- 1 за то, что это ответ, состоящий только из кода, без прямого ответа на вопрос и добавления ничего, чего еще не было в других ответах.

Mark Amery 15.12.2014 21:28

Вот код и демонстрация того, как установить несколько флажков ...

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(). Несмотря на это, это еще один поздний ответ, который не добавляет ничего нового.

Mark Amery 15.12.2014 21:33

В целом:

$("#checkAll").click(function(){
    $(".somecheckBoxes").prop('checked',$(this).prop('checked')?true:false);
});

Обычный JavaScript очень прост и намного меньше накладных расходов:

var elements = document.getElementsByClassName('myCheckBox');
for(var i = 0; i < elements.length; i++)
{
    elements[i].checked = true;
}

Пример здесь

@MarkAmery В принятом ответе не рассматривается, как это сделать без jQuery. Мой ответ добавляет дополнительную пользу к принятому ответу.

Alex W 15.12.2014 23:12

Другое возможное решение:

    var c = $("#checkboxid");
    if (c.is(":checked")) {
         $('#checkboxid').prop('checked', false);
    } else {
         $('#checkboxid').prop('checked', true);
    }

Чтобы проверить и снять отметку

$('.myCheckbox').prop('checked', true);
$('.myCheckbox').prop('checked', false);

- 1; это не добавляет никакой ценности уже раздутому потоку. Код здесь точно такой же, как принятый ответ.

Mark Amery 15.12.2014 21:25

Вы можете попробовать это:

$('input[name = "activity[task_state]"]').val("specify the value you want to check ")

Это, наверное, самое короткое и простое решение:

$(".myCheckBox")[0].checked = true;

или же

$(".myCheckBox")[0].checked = false;

Еще короче было бы:

$(".myCheckBox")[0].checked = !0;
$(".myCheckBox")[0].checked = !1;

Вот и a jsFiddle.

Если вы используете 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);
        });
    }

Зачем здесь нужен каждый?

tpower 09.07.2014 18:58

Когда вы установили флажок вроде:

$('.className').attr('checked', 'checked')

этого может быть недостаточно. Вы также должны вызвать функцию ниже;

$('.className').prop('checked', 'true')

Особенно, когда вы убрали атрибут checkbox checked.

Для 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');

Как сказал @ 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();

Это может кому-то помочь.

HTML5

 <input id = "check_box" type = "checkbox" onclick = "handleOnClick()">

JavaScript.

  function handleOnClick(){

      if ($("#check_box").prop('checked'))
      {        
          console.info("current state: checked");
      }
      else
      {         
          console.info("current state: unchecked");
      }    
 }

Если вы используете Бутстрап (возможно, неосознанно) ...

$('#myCheckbox').bootstrapToggle('on')
$('#myCheckbox').bootstrapToggle('off')

http://www.bootstraptoggle.com/

if ($('jquery_selector').is(":checked")){
  //somecode
}
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

При ответе предпочтительнее указывать какое-то объяснение, ПОЧЕМУ ваш ответ - тот.

Stephen Rauch 01.11.2017 16:48

Вы можете установить флажок установленного флажка с помощью JavaScript по-разному. Вы можете увидеть ниже.

  1. Первый способ - $('.myCheckbox').prop('checked', true);

  2. Второй способ - $('.myCheckbox').attr('checked', true);

  3. Третий способ (для проверки условия, если флажок установлен или нет) - $('.myCheckbox').is(':checked')

Если вы используете .prop('checked', true|false) и не меняли флажок, вам нужно добавить trigger('click') следующим образом:

// Check
$('#checkboxF1').prop( "checked", true).trigger('click');


// Uncheck
$('#checkboxF1').prop( "checked", false).trigger('click');

так рада, что нашла это. благодарю вас! почти сошла с ума !!

pangyuteng 08.08.2020 05:10

Отредактировано в январе 2019 г.

Вы можете использовать: .prop (имя_свойства) - добавлена ​​версия: 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>

На Angular Framework

Пример 1

В вашем .html файле

<input type = "checkbox" (change) = "toggleEditable($event)">

В вашем файле .ts

toggleEditable(event) {
     if ( event.target.checked ) {
         this.contentEditable = true;
    }
}

Пример 2

В вашем .html файле

<input type = "checkbox" [(ngModel)] = "isChecked" (change) = "checkAction(isChecked ? 'Action1':'Action2')" />

Решение 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.

Heretic Monkey 28.12.2019 01:03

Вы можете сделать это, если у вас есть идентификатор для проверки

document.getElementById('ElementId').checked = false

И это снять отметку

document.getElementById('ElementId').checked = true

Другие вопросы по теме