web-dev-qa-db-ja.com

$( 'input [type = radio]:checked')のイベント

これは私のjQueryスクリプトです:

_$("input[type=radio]:checked").live("click", function() {
    $(this).attr("checked",false);
});
_

すべてのラジオボタンをオンまたはオフにできるようにしたい。コードは、チェックされたラジオがクリックされたときにのみトリガーされることを想定しています。しかし、どういうわけか、ラジオのクリック(チェックされているかどうかに関係なく)がこのイベントをトリガーします。これは、ブラウザが最初にラジオをチェックしてから、スクリプトを実行するかのようです。

alert($("input[type=radio]:checked").size())の場合、正しいカウントが得られました。

私はFF4でコードをテストしていますが、ソリューションがIEにも対応できることを願っています。

わかりました、私の質問は紛らわしいようですので、これは私が欲しいもののための作業コードです、しかしそれは私が避けられることを望む追加のカスタム属性を必要とします。

_<input type="radio" name="group1" value="1" isChecked="false"/>
<input type="radio" name="group1" value="2" isChecked="false"/>
<input type="radio" name="group1" value="3" isChecked="false"/>

<script>

$(document).ready(function(){
    $("radio").click(function(){
        if($(this).attr("isChecked")=="false"){
            $(this).attr("isChecked","true");
            $(this).attr("checked",true);
        }
        else{
            $(this).attr("isChecked","false");
            $(this).attr("checked",false);
        }
    });
});

</script>
_
7
Coisox

これは、実際にはラジオボタンの使用を意図した方法ではありません。ラジオボタンとチェックボックスの間のどこかにある入力コントロールを作成しようとしているようです。

あなたが取ることができるいくつかのアプローチがあります:

1)別のボタンを使用してラジオボタンをクリアします。

HTML:

<input id="clearRadios" type="button">Clear</input>

jQuery:

$('#clearRadios').click(function() {
    // use attr only if you're using an older version of jQuery
    $('input[type=radio]').prop('checked', false);
});

2)ラジオボタンのように機能するように装備されたチェックボックスを使用します。

var $chkboxes = $('input[type=checkbox]');
$chkboxes.click(function() {
    var currChkbox = this;
    $chkboxes.each(function() {
        if (this !== currChkbox) {
            $(this).prop('checked', false);
        }
    });      
});

それが私なら、ほとんどの状況でおそらく最初のオプションを選択します。

8
FishBasketGordo