2011-12-23 15 views
1

ページ上の複数の項目のいずれかがクリックされた場合に実行される関数があります。この関数は機能しますが、私はちょうどそこに||またはそれに類するものを使ってリストするより良い方法があることを知りたいと思います。複数のトリガーを持つ1つの機能。 JQUERY

これは私がこれまで持っているものです。

Init: function() { 

     $('#indian-marker a').click(Operations.ShowIndia); 
     $('#map-2 a').click(Operations.ShowIndia); 
     $('#details-marker a').click(Operations.ShowIndia); 

    }, 

    ShowIndia: function() { 

     $('#map').css('background-image', 'url("../img/map-background-india.jpg")'); 
     $('#map-return').show(); 
     $('#india-box-link').toggle(); 
     $('#global-box-link').toggle(); 

     return false; 

    } 
+2

http://api.jquery.com/multiple-selector/よりもこの答えで – nnnnnn

答えて

4

,あなたはdocumentation

+0

そう簡単に、本当にそれがダブルパイプになると思った| |、私のためにこれをクリアするためのおかげで! –

+0

構文はCSSと同じなので、CSSで動作するすべての機能はjQueryセレクタで動作するはずです。 – RageZ

4

あなたはセレクタを組み合わせることができます。

$('#indian-marker, #map2, #details-marker').find('a').click(Operations.ShowIndia); 

私はそれを避けるために、独自の呼び出しに、セレクタのうち、a一部を移動しました何度も何度も繰り返されている。

また、そのコールバックには注意が必要です。 Operations.ShowIndiaと言っているからといって実際に呼び出されたときにはthis === Operationsという意味ではありません。書くために、より安全になります:

... .click(function() { 
    this.ShowIndia(); 
}); 

それは、この特定の機能には問題ありませんが、あなたはthisに依存している他の機能で終わる場合、それは後で混乱を節約できます。

+0

セレクタであれば、より効率的にこの例を確認することができ

Init: function() { $('#indian-marker a, #map-2 a, #details-marker a').click(Operations.ShowIndia); }, ShowIndia: function() { $('#map').css('background-image', 'url("../img/map-background-india.jpg")'); $('#map-return').show(); $('#india-box-link').toggle(); $('#global-box-link').toggle(); return false; } 

仕事shoud受け入れられた答え。また、 '' ShowIndia''関数のスコープの問題も指摘しています。 +1 – David

関連する問題