JQuery установить переключатель - PullRequest
123 голосов
/ 02 марта 2012

Я пытаюсь установить переключатель.Я хочу установить его, используя значение или идентификатор.

Это то, что я пробовал.

$('input:radio[name=cols]'+" #"+newcol).attr('checked',true);

newcol - это идентификатор переключателя.

Возможно, немного правки по порядку.

Есть два комплекта радиоблоков, один с столбцами, а другой с рядами.Так что я вижу смысл в том, чтобы не использовать идентификаторы.Виноват.Итак, у меня есть в качестве примера:

<input type="radio" name="rows" class="listOfCols" 
   style="width: 50%; " value="Site"></input>

и

<input type="radio" name="cols" class="listOfCols" 
   style="width: 50%; "  value="Site"></input>

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

Ответы [ 11 ]

187 голосов
/ 02 марта 2012

Ваш селектор ищет потомка элемента input:radio[name=cols] с идентификатором newcol (то есть значением этой переменной).

Попробуйте вместо этого (поскольку вы все равно выбираете по ID):

$('#' + newcol).prop('checked',true);

Вот демоверсия: http://jsfiddle.net/jasper/n8CdM/1/

Кроме того, начиная с jQuery 1.6 предпочтительным методом изменения свойства является .prop(): http://api.jquery.com/prop

74 голосов
/ 01 августа 2013

Я нашел ответ здесь:
https://web.archive.org/web/20160421163524/http://vijayt.com/Post/Set-RadioButton-value-using-jQuery

Обычно, если вы хотите проверить одну радиокнопку, вы ДОЛЖНЫ передать значение в виде массива:

$('input:radio[name=cols]').val(['Site']);
$('input:radio[name=rows]').val(['Site']);
15 голосов
/ 02 марта 2012

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

$('input:radio[name="cols"]').attr('checked', 'checked');

Предполагается, что в вашей разметке есть следующий переключатель:

<input type="radio" name="cols" value="1" />

Если у вашей радио-кнопки был идентификатор:

<input type="radio" name="cols" value="1" id="myradio" />

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

$('#myradio').attr('checked', 'checked');
11 голосов
/ 16 сентября 2013

Вы можете попробовать следующий код:

$("input[name=cols][value=" + value + "]").attr('checked', 'checked');

Это установит атрибут, проверенный для радио-столбцов и значение, как указано.

8 голосов
/ 02 марта 2012

Зачем вам нужно 'input:radio[name=cols]'. Не знаю ваш html, но, предполагая, что идентификаторы уникальны, вы можете просто сделать это.

$('#'+newcol).prop('checked', true);
6 голосов
/ 02 марта 2012

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

$("#" + newcol).attr("checked", "checked");

У меня были проблемы с attr("checked", true), поэтому я склонен использовать вышеупомянутое.

Кроме того, если у вас есть идентификатор, вам не нужны эти другие материалы для выбора. Идентификатор уникален.

2 голосов
/ 13 сентября 2018

Объединение предыдущих ответов:

$('input[name="cols"]').filter("[value='Site']").click();
2 голосов
/ 17 августа 2017

Использование .filter() также работает и является гибким для идентификатора, значения, имени:

$('input[name="cols"]').filter("[value='Site']").attr('checked', true);

(видно по в этом блоге )

2 голосов
/ 02 марта 2012

Поскольку newcol является идентификатором переключателя, вы можете просто использовать его, как показано ниже.

$("#"+newcol).attr('checked',true);
0 голосов
/ 20 октября 2016

Выбранный ответ работает в этом случае.

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

Эта строка выбирает именно то, что было запрошено, а также показывает изменения на экране.

$('input:radio[name=cols][id='+ newcol +']').click();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...