событие onchange не предупреждает

#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.');
    });

});