change
タイトルが示すように、チェックボックスのイベントとイベントの違いを知りたいclick
(jQueryで)
私はこれに対する答えを読みましたチェックボックスの.clickと.changeの違いは何ですか
しかし、それは私にとってはうまくいきません。change
フォーカスを失うことなくスペースをヒットしても発火します。
ここにフィドルのデモがあります
どちらも同じように機能しているようです。ここで何か不足していますか?
change
タイトルが示すように、チェックボックスのイベントとイベントの違いを知りたいclick
(jQueryで)
私はこれに対する答えを読みましたチェックボックスの.clickと.changeの違いは何ですか
しかし、それは私にとってはうまくいきません。change
フォーカスを失うことなくスペースをヒットしても発火します。
ここにフィドルのデモがあります
どちらも同じように機能しているようです。ここで何か不足していますか?
W3C によると、onclick
イベントはアクセシビリティの目的でキーボードによってトリガーされます。
SCR35: アンカーとボタンの onclick イベントを使用して、アクションをキーボードでアクセスできるようにする
マウスを使用しないユーザーにより良いユーザー エクスペリエンスを提供するために、ブラウザーは、クリックがキーボードで発生したonclick
場合でもイベントを発生させるように開発されています。
このため、キーボードのスペースバーを使用してチェックボックスをクリックclick
しても、jQuery のイベントが発生します。、明らかに、チェックボックスの状態が変化するたびに起動します。change
change
チェックボックスは、とが交換可能な特殊なケースです。これは、もトリガーせずclick
にイベントを発生させることができないためです。change
click
もちろん、このルールの例外は、javascript を使用してチェックボックスを手動で変更する場合です。たとえば、次のようになります。
/* this would check the checkbox without firing either 'change' or 'click' */
$('#someCheckbox').prop('checked',true);
/* this would fire 'change', but not 'click'. Note, however, that this
does not change the checkbox, as 'change()' is only the function that
is fired when the checkbox changes, it is not the function that
does the changing */
$('#someCheckbox').trigger('change');
/* this would fire 'click', which by default change state of checkbox and automatically triggers 'change' */
$('#someCheckbox').trigger('click');
これらのさまざまなアクションのデモを次に示します: http://jsfiddle.net/jackwanders/MPTxk/1/
お役に立てれば。
主な違い:フォーカスされたチェックボックスでスペースをクリック/ヒットすると、最初にclick
イベントが発生し、変更はありません。この時点でも、チェックボックスevent.preventDefault()
の状態を切り替えるデフォルトのアクション(を使用)を防止し、イベント(デフォルトのアクションを取得していない)を発生させることができます。checked
change
一部のブラウザでは、changeイベントは。の後の最初のblur
後にのみ発生しclick
ます。
チェックボックスが変更されたときに(クリックしなくても)その変更が発生すると思います。たとえば、他の関数を介してチェックボックスの状態を変更した場合。
私が経験した違いはこれです:
var $check = $(':checkbox');
$checkbox.checked = true;
$checkbox.click( function() {
alert(this.checked); // true
}).change( function() {
alert(this.checked); // false
});
したがって、クリックでは状態はまだ変更されていませんが、変更では...
キーボード(タブとスペースバー)を使用して、クリックせずにチェックボックスをオンまたはオフにすることができます。これはステートメントを変更しますが、クリックしません。私見では
これが役に立たない場合はお知らせください。投稿を削除します。
Change
: http://api.jquery.com/change/state
-要素が変更された場合、つまりクリックされずに変更された場合、変更イベントがトリガーされると思います。チェックボックスには、チェックされている状態とチェックされていない状態があります。
Click
: クリック イベントは、要素をクリックしたときであり、チェックボックスの状態は関係ありません。
擬似コードのように
if checkbox state is checked
alert(Hulk is awesome);
if checkbox is click every time
alert(Ironman is alright);
Change イベントは、チェック ボックスがフォーカスされているときにスペースを押すことによってチェック ボックスのステータスが変更されたときに発生します。変更イベントが指定されている場合はクリック前のその時間も実行され、クリックイベントが実行されます。
ここでは、クリア スクリプトがビンで実行されていることがわかります: http://codebins.com/codes/home/4ldqpbu