2011-07-17 7 views
0

同じイベントをwindowにバインドするにはどうしたらいいですか?私はこれを試してみましたが、それは私のために動作しません:jQuery:同じイベントをウィンドウと別の要素にバインドする

$('window, #someId').bind('click', doSomething); 
+0

達成しようとしているものは何ですか? – Pointy

+0

jsFiddleのサンプルをコピー/ペーストできますか? –

+0

私が与えたスニペットは悪い例であることに同意しますが、私は一般的に2つの別個のバインドコールを作成せずに上記のようにする方法を探したかったのです。 – jeffreyveon

答えて

7
$('#someId').add(window).bind('click', doSomething); 

それを行う必要があります。

2

まあ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です。

2
$(window).add('#someId').bind('click', doSomething); 
関連する問題