.checked = true не работает с функцией jquery $ - PullRequest
5 голосов
/ 26 июля 2010

Я хочу установить флажок при нажатии кнопки.

<form action="" method="post" id="form2">
    <input type="checkbox" id="checkone" value="one" name="one" />
    <input type="button" value="Click me" id="buttonone"/>
</form>

когда я попробовал следующее, флажок не был установлен

$('#buttonone').click(function() {
    $('#checkone').checked=true;
});

тогда я попробовал:

$('#buttonone').click(function() {
    document.getElementById('checkone').checked=true;
});

на этот раз флажок был установлен. почему его не выбирают с помощью функции jquery $?

Ответы [ 7 ]

11 голосов
/ 26 июля 2010

Попробуйте

$('#checkone').attr('checked', true);

или

$('#checkone').get(0).checked = true;

или

$('#checkone')[0].checked = true; // identical to second example

Причина, по которой ваш первый код не сработал, заключается в том, что вы пытались установить свойство checked для объекта jQuery, которое не будет иметь видимого эффекта, поскольку оно работает только с собственным объектом DOM.

Вызывая get(0) или получая доступ к первому элементу [0], мы извлекаем собственный элемент DOM и можем использовать его как обычно, как во втором примере. Также можно установить атрибут checked с помощью функции jQuery attr, которая также должна работать.

2 голосов
/ 26 июля 2010

Вам необходимо использовать .attr() для объекта jQuery , например:

$('#buttonone').click(function() {
  $('#checkone').attr('checked', true);
});

Но лучше сделать это DOM-способом, например:

$('#buttonone').click(function() {
  $('#checkone')[0].checked = true; //get the DOM element, .checked is on that
});

Или полностью без jQuery:

document.getElementById('buttonone').onclick = function() {
  document.getElementById('checkone').checked = true;
};
1 голос
/ 07 февраля 2014

Ни один из этих ответов не работал для меня, потому что у меня неправильно было несколько радиостанций с одинаковыми атрибутами имени:

<div id="group-one">
  <input type="radio" name="groups" value="1" checked="checked" />
  <input type="radio" name="groups" value="2" />
</div>
<div id="group-two">
  <input type="radio" name="groups" value="1" checked="checked" />
  <input type="radio" name="groups" value="2" />
</div>

Javascript не распознает проверенный атрибут (очевидно).Это было результатом использования include для многократного добавления аналогичного раздела HTML.Очевидно, что нажатие на кнопку радио отключит переключатели радио с тем же именем.

Вот jsfiddle, чтобы показать, что два радиоэлемента могут иметь атрибут checked, но только последний фактически проверен:

http://jsfiddle.net/bozdoz/5ecq8/

Опять же, довольно очевидно, но, возможно, стоит обратить внимание: удалите атрибуты id и name из файлов, которые вы собираетесь включать в другие файлы несколько раз.

0 голосов
/ 22 мая 2014

попробуйте

    $('#buttonone').click(function() {
  $('#checkone').prop('checked', true);
});
0 голосов
/ 24 сентября 2012

Или вы могли бы просто сделать

$('#buttonone').click(function() {
    $('#checkone')[0].checked=true;
});

Это потому, что ".checked" не является частью jQuery, и вы пытаетесь использовать его для объекта jQuery. Если вы индексируете объект jQuery в [0], вы получаете необработанный объект Javascript, в котором существует «.checked».

Подробнее здесь: http://phrappe.com/javascript/convert-a-jquery-object-to-raw-dom-object/

0 голосов
/ 26 июля 2010

попробуй

$('#checkone').attr('checked', true);

путь к поиску "jquery check a checkbox" был подходящим способом

0 голосов
/ 26 июля 2010

Попробуйте

$('#checkone').attr('checked', true);

У вас нет прямого доступа к свойствам объекта DOM, потому что jQuery работает с коллекциями ($(selector) - это массив). Вот почему у вас есть функции, определенные для работы с содержимым возвращаемых элементов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...