4

これは、ラジオボタンの1つのコードの一部です。

$("#new").click(function(){
    if( $('#new').is(':checked') )
        $.jGrowl("You already have this option selected!", life: 1500});
    else
        changeOption(1);
});

elseクリックイベントでラジオボタンがすでにチェックされているため、パーツが実行されないことを理解しました。私が疑問に思っているのは、ラジオボタン(クリックされようとしている)の状態をキャプチャして、彼がまだクリックされていないかどうかを判断できるイベントがあるかどうかです。クリックされている場合は、オプションをこの新しく選択されたものに変更します。 1。

4

4 に答える 4

6

初期値をデータ属性に格納し、変更時にそれを使用します。

$.each($("input[type='radio']"), function(i,e) {
    $(e).data('check', e.checked);
});

$("#new").on('click keyup', function(){
    if( $(this).data('check') ) {
        alert("You already have this option selected!");
    }else{
        alert("This option is unselected");
    }
    $(this).data('check', this.checked);
});​

フィドル

キーボードイベントでも機能します。

于 2012-08-28T12:38:58.003 に答える
4

代わりにmouseupイベントを使用してください。

$("#new").mouseup(function(){
    if( $('#new').is(':checked') )
        $.jGrowl("You already have this option selected!", life: 1500});
    else
        changeOption(1);
});

フィドル

編集
mouseupイベントは機能しますが、mousedownイベントを使用する方が論理的です。これがそのフィドルです。

于 2012-08-28T13:09:42.533 に答える
2

mousedownイベントが機能するはずです。マウスボタンを離す前に、要素がクリックされたときにトリガーされます。

于 2012-08-28T12:31:11.197 に答える
0

チェックされていない場合は、チェックを外してみませんか?

$("#new").click(function(){
    if( $('#new').is(':checked') ){
        $.jGrowl("You already have this option selected!", life: 1500});
        $('#new').attr('checked', false);
    } else {
        changeOption(1);
        $('#new').attr('checked', true);
    }
});
于 2012-08-28T12:36:33.277 に答える