4

チェックボックスをクリックすると、手動またはで$(this).is(":checked")クリックした場合とは反対の結果が得られる理由を誰かが説明できますか$("#test").click()document.getElementById("test").click()

編集ここで要求された動作-ありがとう:

http://jsfiddle.net/ub8Zk/4/

編集2

これは私を夢中にさせていましたが、最終的に気づきました.jQueryのバージョン1.5.2では、メソッドが呼び出されchangeたときにイベントのイベントハンドラーが起動されますclick()(ネイティブjsのように)!! 以前のバージョンではそうではありません。

ここを見て:

http://dl.dropbox.com/u/6996564/jquery_click_test/test-1.4.4.htm ... test-1.5.1.htm ... test-1.5.2.htm

誰かがこのバグを報告するのを手伝ってくれますか??

4

4 に答える 4

5

クリックイベントは値が変更される前に発生するため、古い値を取得してます。クリックのデフォルトハンドラーは、クリックイベントの後に発生し、値を切り替えます。それが反対の値を取得している理由です。ドキュメントクリック関数が何か奇妙なことをしていると思います(私はそれを信頼しません、私はjQueryを信頼します)。

このフィドルを見てください:http://jsfiddle.net/ub8Zk/4/

于 2011-04-15T00:12:06.053 に答える
3

チェックボックス入力を使用しているため、したくis(':checked')ないis(':selected')

于 2011-04-14T23:32:19.590 に答える
2
$('input#someCheckbox').click(function() {
    if ($(this).is(':checked')) {
        // checked
    } else {
       // not checked
    };
});
于 2011-04-15T03:09:21.813 に答える
-1

あなたのコードがわかりません。click() は、ドキュメントに従ってハンドラーをマウス クリック イベントにバインドします。次のように書くこともできます: $('#foo').bind('click', function() { alert('User clicked on "foo."'); }); トリガーしたい場合は、trigger() 関数を次のように使用します: $('foo').trigger('click') または document.getElementById('foo').checked = true; ストレートJavaScriptを使用する場合。

于 2011-04-15T02:38:30.057 に答える