1

私は 、buttondivを持っていますselect combo-box

ボタンのクリックdivのmouseenter、およびコンボボックスのonchangeとblurで特定の機能を実行したい

私は今これをします

$("#divID").bind('mouseenter',function(){

   // do my stuff
}) 

$("#comboID").bind('blur change',function(){

   // do my stuff
})  

$("#buttonID").bind('click',function(){

   // do my stuff
})  

毎回同じことをしています。重複を避けるためにすべてのイベントを結合したい 1 つのステートメントで各要素を特定のイベントにバインドする方法はありますか

functionコードを個別に記述して、毎回呼び出すことができることを知っています(重複を解決します)。

しかし、私はこれが別のものなしで行うことができるか知りたいfunctionですjQuery

4

3 に答える 3

2

個別のセレクターを備えた個別のイベントがあるため、1つのセレクターまたはイベントでは不十分であり、IDとイベントをマップできます。jqueryはそれを単一のステートメントにするのにあまり役立たなかったと思います。

ライブデモ

arrIDs = ['divID','comboID','buttonID'];
arrEvents = ['mouseenter','blur change','click'];

for(idx=0; idx < arrIDs.length; idx++) 
    $("#" + arrIDs[idx] ).bind(arrEvents[idx], yourFunction);

function yourFunction(event)
{
    alert("yourFunction call by " + event.target.id);  
}
于 2012-11-01T09:26:41.043 に答える
1

さまざまな要素にさまざまなイベントを添付する必要があるため、1つのステートメントではありません。ただし、すべてのイベントに対して呼び出す単一のコールバック関数を宣言できます。

var callback = function () {
  // do my stuff
};

$("#divID").bind('mouseenter', callback);
$("#comboID").bind('blur change', callback);
$("#buttonID").bind('click', callback);
于 2012-11-01T09:22:02.097 に答える
0

jqueryを使用しない場合は、いつでも他のイベントを最初のイベントと同じになるように設定できます。ただし、別の関数を作成することをお勧めします。

于 2012-11-01T09:23:58.543 に答える