同じイベントをwindow
にバインドするにはどうしたらいいですか?私はこれを試してみましたが、それは私のために動作しません:jQuery:同じイベントをウィンドウと別の要素にバインドする
$('window, #someId').bind('click', doSomething);
同じイベントをwindow
にバインドするにはどうしたらいいですか?私はこれを試してみましたが、それは私のために動作しません:jQuery:同じイベントをウィンドウと別の要素にバインドする
$('window, #someId').bind('click', doSomething);
$('#someId').add(window).bind('click', doSomething);
それを行う必要があります。
まあwindow
が要素ではありません。これを行うと、あなたはあなたのハンドラがあちこちからのクリックを取得していることに気づくでしょう
$('body, #someId').bind('click', doSomething);
:あなたは<body>
にイベントをバインドすることができます。どうして?いずれの場合も、これらのクリックはすべてボディに「バブルアップ」するためです。したがって、あなたは、「ターゲット」属性はイベントのものであり、ターゲットが登録要素である場合にのみ、イベントに応答するものハンドラでチェックする必要があります:
$('body, #someId').click(function(ev) {
if (this === ev.target) {
// do stuff
ev.stopPropagation(); // optional
}
else {
// event not relevant
}
});
Hereは例示jsfiddleです。
$(window).add('#someId').bind('click', doSomething);
達成しようとしているものは何ですか? – Pointy
jsFiddleのサンプルをコピー/ペーストできますか? –
私が与えたスニペットは悪い例であることに同意しますが、私は一般的に2つの別個のバインドコールを作成せずに上記のようにする方法を探したかったのです。 – jeffreyveon