2

チェックボックスをクリックしたときのステータスをテストしようとしています。

私の問題は、変更イベントが発生する前ではなく、発生した後にステータスを報告するのと同じように常にtrueを報告することです。

とにかく変更前にテストできますか?

jQueryを使用する現在のコード-クラス'パッケージ'のすべてのチェックボックス:

$(".package").click(function(){
    if($(this).is(":checked")){
        alert($(this).attr("checked"));
    }
});

現在チェックされていないチェックボックスを選択した場合でも、これは常にtrueを返します。

編集:わかりました、クリック機能が実際に機能したことをクリーンアップした後、プロセスを妨害するいくつかの古いjsがあったようです。皆さんありがとう。

4

3 に答える 3

2

onchangeチェックボックスでイベントを使用することは、クロスブラウザーではありません(こんにちは IE! そして、jQuery を使用する場合でもそうです)。

以下の作品:

$('.package').click(function() {
    console.log(this.checked) // There is no need for jQuery here
})

チェックボックスをオンにすると「true」、オフにすると「false」がログに記録されます。

そして真剣に、$(this).attr('checked')orを使用すること$(this).is(':checked')はただの jQueryception です。

于 2012-04-04T11:46:29.607 に答える
1

クリック イベントは、実際のテキスト ボックスの変更が行われる前に発生します。変更イベントをサブスクライブする必要があります。

$(".package").change(function(){
    if($(this).is(":checked")){
        alert($(this).attr("checked"));
    }
});

編集:実際のJavascriptオブジェクト自体をクエリしてみてください。うまくいくはずです

$(".package").change(function(){
    if(this.checked){
        alert(this.checked);
    }
});
于 2012-04-04T11:40:26.227 に答える
1

代わりに change イベントを使用できます。これにより、以前にチェックされた状態が、現在読んでいるものとは常に反対になることが保証されます。

$(".package").change(function() {
    alert($(this).attr("checked"));
});
于 2012-04-04T11:41:37.280 に答える