click()がマウスクリックであるか、またはあるコードでトリガされたかどうかを検出するにはどうすればよいですか?click()がマウスクリックか、あるコードでトリガされたかどうかを検出する方法は?
答えて
イベントオブジェクトのwhich
プロパティを使用します。これは、コード・トリガーのイベントのundefined
する必要があります:
$("#someElem").click(function(e) {
if(e.which) {
//Actually clicked
}
else {
//Triggered by code
}
});
は、ここでは上記のworking exampleです。コメント
input
要素にフォーカスがあるときEnterキーを押すと、click
イベントをトリガすることができます基づいて
更新。コードでトリガされたクリックと他のすべてのクリック(マウスまたはキーボードでトリガされたもの)を区別したい場合は、上記のメソッドが正常に動作するはずです。しばらくの間
$("#someElem").click(function(e) {
if(e.originalEvent === undefined) {
//triggered
}
else {
//clicked by user
}
});
あなたはe.originalEventをチェックする必要があります。 Webkitもこれをサポートします。
現在、保証する方法はありません。
**ライブデモ:** http://jsfiddle.net/frw8j/3/ –
これはtriggerHandlerとnotとを区別しているようですが、私がやったときには $( "#someElem")[0] .click() 実際の「クリック」として扱われました。 –
待ちをしてevent.isTrusted
を使用する - そのIE9、オペラ12、およびFirefoxナイトリーでサポートされている:
私は同意しない:e.originalEventはトリックを行う –
あなたのピンクの眼鏡を壊したくないが、jQueryは魔法の杖ではない... – c69
''はキーボードのアクティビティを検出できますが、OPはマウスのアクティビティのみを望みます – diEcho
キーボードでどのように要素をクリックできますか? –
あなたは決して入力を押してログインしたことはありませんか? – awm