Нажмите или измените событие на радио с помощью jquery

У меня есть несколько радиостанций на моей странице, и я хочу что-то сделать, когда проверенное радио изменится, однако код не работает в IE:

$('input:radio').change(...);

И после googling, люди предлагают использовать клик. Но это не работает.

Это пример кода:

<html>
    <head>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
        <script type="text/javascript">
            $('document').ready(
                function(){
                    $('input:radio').click(
                        function(){
                            alert('changed');   
                        }
                    );  
                }
            );

        </script>
    </head>
    <body>
        <input type="radio" name="testGroup" id="test1" />test1<br/>
        <input type="radio" name="testGroup" id="test2" />test2<br/>
        <input type="radio" name="testGroup" id="test3" />test3</br>
    </body>
</html>

Он также не работает в IE.

Итак, я хочу знать, что происходит?

Также я боюсь, если он перезапустит событие изменения, если я нажму на проверенную радио?

UPDATE:

Я не могу добавить комментарий, поэтому я отвечаю здесь.

Я использую IE8, и ссылка Furqan дает мне тоже не работает в IE8. Я не знаю, почему...

Ответ 1

Этот код работал у меня:

$(function(){

    $('input:radio').change(function(){
        alert('changed');   
    });          

});

http://jsfiddle.net/3q29L/

Ответ 2

Вы можете указать атрибут имени, как показано ниже:

$( 'input[name="testGroup"]:radio' ).change(

Ответ 3

Работает для меня тоже, вот лучшее решение:

демонстрацию скрипта

<form id="myForm">
  <input type="radio" name="radioName" value="1" />one<br />
  <input type="radio" name="radioName" value="2" />two 
</form>

<script>
$('#myForm input[type=radio]').change(function() {       
    alert(this.value);
});
</script>

Вы должны убедиться, что вы инициализировали jquery выше всех других импортных и javascript-функций. Потому что $ - это функция jquery. Даже

$(function(){
 <code>
}); 

не проверяет инициализацию jquery или нет. Он гарантирует, что <code> будет запущен только после инициализации всех javascripts.

Ответ 4

Try

$(document).ready(

вместо

$('document').ready(

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

$(function(){
});

Ответ 5

$( 'input[name="testGroup"]:radio' ).on('change', function(e) {
     console.log(e.type);
     return false;
});