次のjsfiddleに注意してください:http://jsfiddle.net/RA3GS/4/
チェックボックスを手動でチェックすると、チェックされたときにチェックされたと表示され、チェックされたままになっていることがわかります。ただし、テストボタンを押すと、チェックされてからチェックが外れるか、チェックされていないことを示してチェックされていることがわかります。
問題は次のとおりです。事前にチェック値を設定しないことを選択した場合、チェックボックスは最後に正しくチェックされますが、クリックされた関数はチェックされていないことを誤って示します。チェックされた値を設定すると、click()関数はチェックボックスがチェックされていることを正しく示しますが、他のイベント(un)が最後にチェックボックスのチェックを外します。
jsfiddleはテストです。私の実際の実装では、input要素のclick()関数を制御できないため、click関数でログインを変更するだけではありません。
これは私が望む振る舞いです、正確には:
- ボタンをクリックします。
- クリック()関数がトリガーされ、チェックされる要素を信じます。
- 他のすべてのイベントは、チェックボックスがチェックされていると信じています。
- すべてが言われ、行われるとき、チェックボックスはまだチェックされています。
より簡単な例
ここにもっと簡単なjsfiddleを置きました:http: //jsfiddle.net/49jUL/
機能を変更せずに、status
どのチェックボックスをオンにしてもコンソールを同じように表示したい。現在の出力は次のとおりです。
マニュアルをクリック
A tester received the following event change
Value: 100 Checked: true
A tester received the following event click
Value: 100 Checked: true
コントローラをクリックする
A tester received the following event click
Value: 100 Checked: true
A tester received the following event change
Value: 100 Checked: false
change
手動のラジオボタンをクリックすると、最初にが呼び出されてからが呼び出され、クリック click
をトリガーするとが呼び出されてからが呼び出されるのは興味深いことです。click
change
私がそれを呼び出しようとしたとき$target.change().click()
、それは単にchange
、次にclick
、そして最後にchange
再びchecked
falseに設定して呼び出すことに注意してください。