0

引数を 1 つ取る関数があります。

function magic(el){
 ...
}

関数を呼び出す要素/クラスが混在するクリックハンドラーがたくさんあります。

$('#div1').click(function(){ magic('#other-div'); });
$('.crazy-div').click(function(){ magic('.mystery-div'); });
$('#doomed-divv').click(function(){ magic('#shady-div'); });
$('#secret-div').click(function(){ magic('form'); });
$('#div2').click(function(){ magic('p'); });
...

これらを統合する良い方法はありますか?おそらく連想配列で?

4

1 に答える 1

2

キーと値の割り当て (特定の ID がクリックされたときに引数として渡される ID) を含むオブジェクトを作成し、それを使用$.eachしてキーを反復処理し、それぞれにクリック関数を割り当てるだけで十分です。

var a = {
   '#div1' : '#other-div',
   '#doomed-divv' : '#shady-div'
};
$.each(a,function(key,value){
    $(key).click(function(){
        magic(value);
    });
});​

JSフィドル

于 2012-10-30T22:24:31.103 に答える