#jquery #onchange
#jquery #onchange
Вопрос:
Может кто-нибудь помочь мне выяснить, почему это не запускается?
$("input:radio[name=cm-fo-ozlkr]").change( function(){
alert('Handler for .change() called.');
});
HTML
<input type="radio" checked="checked" class="styled" value="1397935" id="cm1397935" name="cm-fo-ozlkr"><input type="radio" class="styled" value="1397934" id="cm1397934" name="cm-fo-ozlkr">
Комментарии:
1. Как вы назначаете обработчик события? документ готов?
2. Это работает. В чем проблема? Проверьте: jsbin.com/axura4/edit
3. да, это так, через jquery
Ответ №1:
В вашем селекторе атрибутов отсутствовали кавычки;
$("input:radio[name='cm-fo-ozlkr']").change( function(){
alert('Handler for .change() called.');
});
Комментарии:
1. Селекторы атрибутов не требуют кавычек.
2. w3.org/TR/css3-selectors/#attribute-selectors Поскольку значение атрибута не является буквенно-цифровым (следовательно, -), кавычки требуются в соответствии с w3c
3. Требуется в соответствии со стандартом? Конечно. Требуется, как в его примере, не работает? Даже немного.
4. Это правильно, но не для всех браузеров. Например, Google Chrome допустит строку с дефисами, которая не заключена в кавычки, но IE до 9 включительно этого не сделает. Я уже добавил свой 1 некоторое время назад, но, увидев комментарии, я подумал, что мог бы добавить свой 0.02. В качестве наилучшей практики всегда указывайте кавычки для селектора атрибутов.
5. Спасибо за понимание, Энди, я не знал об ограничении IE!
Ответ №2:
Генерируется ли HTML-переключатель динамически, например, при обновлении ajax? Если это так, вы хотите использовать jQuery в реальном времени:
$("input:radio[name=cm-fo-ozlkr]").live('change', function () {
alert('Handler for .change() called.');
});
Ответ №3:
Используйте click
событие вместо change
.
Кроме того, правильный селектор input[name=cm-fo-ozlkr]:radio
.
Комментарии:
1. 1 — Концепция списка переключателей по общему имени почти кажется своего рода взломом; думайте о каждой переключателе как об отдельном элементе, который просто случайно отменяет выбор других переключателей при нажатии на него.
2. Порядок атрибутов в селекторе не имеет значения.
input:radio[name=cm-fo-ozlkr]
также верно.3. Его селектор работает нормально, и
click
это просто не то же событие, чтоchange
. На самом деле это не ответ.
Ответ №4:
Попробуйте это….
$(document).ready(function(){
$("input:radio[name='cm-fo-ozlkr']").change( function(){
alert('Handler for .change() called.');
});
});
Ответ №5:
если вы еще этого не сделали…
$(document).ready(function() {
$("input:radio[name=cm-fo-ozlkr]").change( function(){
alert('Handler for .change() called.');
});
});