2009-10-29 7 views
16

jQueryの「ライブ」メソッドは複数のイベントを処理できません。誰もが現在と将来の要素をポーリングする関数に複数のイベントを添付する良い回避策を知っていますか?または、私は必要なイベントハンドラごとに複製メソッドを使用してスタックしていますか? .bind()で提供される機能に似た複数の、スペースで区切られたイベントを、受け入れることができますjQueryの1.4.1 .live()のとおり複数のイベントをjQueryの「ライブ」メソッドにバインド

$('.myclass').live('change keypress blur', function(){ 
    // do stuff 
}); 
+0

複数のハンドラを同じイベントにアタッチしようとしていますか?または、さまざまなイベントのハンドラをアタッチしようとしていますか? – geowa4

+0

$( "a")を実行できるかのように、同じハンドラ内で複数のイベントが必要なように聞こえるのですが、live(["click"、 "mouseover"、 "doubleclick"]、{ –

+0

私は "$( '。myclass')のようなことをしようとしています。live(" click keypress blur "、function(){..." –

答えて

14

のjQuery 1.4.3の時点で、あなたは、イベントタイプのマップを渡すことで、同時に複数のライブイベントハンドラをバインドすることができます/ハンドラのペア:

$("a").live({ 
    click: function() { 
    // do something on click 
    }, 
    mouseover: function() { 
    // do something on mouseover 
    } 
}); 

http://api.jquery.com/live/

jQueryの1.7から、機能 "の" より良いです:

私の意見ではjQuery 1.7では
19

:私のような何かをしようとしています -

例。たとえば、私たちは「ライブバインド」そうのように同時にマウスオーバーとマウスアウトイベントをすることができます

$('.hoverme').live('mouseover mouseout', function(event) { 
    if (event.type == 'mouseover') { 
    // do something on mouseover 
    } else { 
    // do something on mouseout 
    } 
}); 
7

あなたは簡単にそれを行うことができ、APIがある...

$(".myClass").on({ 
    click: function(){ 
     alert("You click on me!"); 
    }, 
    mouseenter: function(){ 
     alert("Do you want click on me?"); 
    } 
}); 

この方法は完全に効率的であり、あなたは、要素のイベントで使用できるすべての能力を集めます... 。

この方法で試してみてください。このページで.on() [ jQuery 1.7 API ]

1

を見てみましょう:

("#button").bind("click keyup", function(){ 

// your code goes here 

}) 
関連する問題