#jquery-selectors
#jquery-селекторы
Вопрос:
У меня есть таблица, подобная такой:
<table>
<tr>
<td>
<input type="radio" name="Sample1" id="Sample1" value="1" />
<input type="radio" name="Sample1" id="Sample2" value="1" />
</td>
<td>
<input type="radio" name="Sample2" id="Sample1" value="1" />
<input type="radio" name="Sample2" id="Sample2" value="1" />
</td>
etc....
</tr>
</table>
Я хочу иметь возможность выбирать конкретный переключатель с помощью name
и id
. Например, выберите переключатель с именем Sample2
и идентификатором Sample1
. Я пытался сделать это:
$('[id="Sample1"][name="Sample2"]').checked = true;
Но безуспешно… Как я должен это делать?
Комментарии:
1. У вас может быть только один идентификатор для каждого элемента на странице
2. Действительно. Идентификаторы — это уникальные идентификаторы для элементов. Чего, черт возьми, вы пытаетесь здесь достичь?
3. Кроме того, вы не можете определить один и тот же идентификатор дважды.
4. @TheAdamGaskins: Выйти. Ввод недопустим .
5. @TheAdamGaskins тогда вам нужно сказать своему боссу, что его входные данные недействительны, и ему нужно их изменить, вы не можете просто игнорировать правила кода без последствий
Ответ №1:
$('#Sample1[name="Sample2"]').attr('checked','checked');
но элементы могут иметь только один идентификатор, поэтому, возможно, вы хотите class вместо id
$('.Sample1[name="Sample2"]').attr('checked','checked');
затем ваш html
<table>
<tr>
<td>
<input type="radio" name="Sample1" class="Sample" value="1" />
<input type="radio" name="Sample1" class="Sample" value="1" />
</td>
<td>
<input type="radio" name="Sample2" class="Sample1" value="1" />
<input type="radio" name="Sample2" class="Sample2" value="1" />
</td>
</tr>
</table>
Редактировать
внесены некоторые изменения, вот рабочая демонстрация
Комментарии:
1. Это работает отлично, хотя с
ID
‘s он выбирает только первый переключатель (что и ожидалось). Мне придется поговорить с боссом о переходе наclass
…2. @theadamgaskins пожалуйста, смотрите мою заметку выше об идентификаторе, это действительно необязательно, у вас просто не может быть элементов с одинаковым идентификатором, иначе у вас будет плохое поведение
3. «элементы могут иметь только один идентификатор» технически неверно, однако он ДОЛЖЕН быть уникальным в поддереве elements.
4. О, вы тут расходитесь во мнениях, @MarkSchultheiss Я думаю, люди понимают, что имеется в виду. Однако, если вы хотите отредактировать мой пост, будьте моим гостем.
5. Не беспокойтесь, это на самом деле отчасти исчезает и с более свежими спецификациями HTML. Комментарий действительно был с моей стороны предназначен для других, поскольку я вижу много «сломанного» html с дублирующимися идентификаторами и т.д. (Не вами!) я на самом деле проголосовал
Ответ №2:
.checked = true
неверно. Используйте .attr('checked', true)
.
Кроме того, вы можете использовать идентификатор только один раз. Идентификаторы — это уникальные идентификаторы для элементов. Я понятия не имею, чего вы пытаетесь здесь достичь, но:
<html>
<body>
<input type="radio" name="Sample1" id="SampleA" />
<input type="radio" name="Sample1" id="SampleB" />
<input type="radio" name="Sample2" id="SampleC" />
<input type="radio" name="Sample2" id="SampleD" />
<script type="text/javascript">
$(function() {
$('#SampleC[name="Sample2"]').attr('checked', true);
// [id="SampleC"][name="Sample2"] works too
});
</script>
</body>
</html>
выполняет работу.
Редактировать
На самом деле .attr('checked', 'checked')
более переносимый.
Комментарии:
1. Да… На самом деле я это не контролирую. Мой босс дал мне URL-адрес страницы, которая генерирует таблицы в этом формате … вот с чем мне приходится работать.
2. @TheAdamGaskins: Выйти. Входные данные недопустимы , и может случиться все, что угодно.