2

に似たものが欲しかった

$('#el1').bind({
    click,function(e){
        alert('clicked on el1');
    },
})
$('#el2').bind({
    click,function(e){
        alert('clicked on el2');
    },
})

'on' を使用する場合。私は次のようなものを探していました:

$(document).on({
    click:'el1',function(e){
        alert('clicked on el1');
    },
    click:'el2',function(e){
        alert('clicked on el2');
    }
})

これは動作しません。

[編集済み]
もっと明確にする必要があると思います。さまざまな機能に共通点はありません。おそらく次のようなことができます:

$(document).on({
    click:'el1',function(e){
        alert('clicked on el1');
    },
    click:'el2',function(e){
        $('body').css('background-color','green');
    }
})

現在switch case、私が探していたものに最も近いソリューションを使用していることがわかります。

4

4 に答える 4

3

ハンドラー関数が無関係である場合は、それらを1つにまとめようとしないでください。読みやすさが損なわれます。

代わりに、明確にして、ハンドラーを個別にアタッチしてください。

$('#el1').click(function() { ... });
$('#el2').click(function() { ... });

これは、2つの別個の無関係な機能であるとすぐに認識できます。将来的には、このコードの保守と変更が容易になるでしょう。あなたのコードに不慣れな人は、風変わりな慣習を学ぶ必要はありません。これがjQueryの動作方法です。

$('#el1,#el2').click(function() {
    switch (this.id) {
        case 'el1': ... break;
        case 'el2': ... break;
    }
});

ええ。

于 2012-05-08T17:43:48.597 に答える
2

セレクターはメソッド呼び出しで設定できます。

$("body").on("click", "#el1, #el2", function(){
alert("clicked on " + $(this).attr("id"));
});
于 2012-05-08T17:15:12.043 に答える
2

セレクターを組み合わせるか、一般的なパターンを使用$.onして、それらに対して使用できます。

$("body").on("click", "[id^='el']", function(){
  switch ( this.id ) {
    case "el1" :
      /* Do el1 stuff */
      break;
    case "el2" :
      /* Do el2 stuff */
  }
});

デモ: http://jsbin.com/asoqoz/edit#javascript,html

于 2012-05-08T17:15:33.757 に答える
0

すべての DOM を検索するのではなく、要素にクラスを使用します。

<div id="el1" class="someClass"></div>
<div id="el2" class="someClass"></div>

$('.someClass').on('click', function(){
    alert("Clicked on " + this.id);
});
于 2012-05-08T17:18:59.607 に答える