2011-07-13 9 views
1

を設定した後、イベントを添付する最初のこれは私がページネーションを行うための機能で使用し、私のjQueryのコードのexempleです:jQueryの:すぐにHTMLコンテンツ

// new_content is a variable that holds the html I want to add to a div 
$('div#my_div').html(new_content); 
$("div#my_div a.details").hover(function(){   
    $(this).fadeIn(); //code to execute when the mouse get in 
}, function(){ 
    $(this).fadeOut(); //code to execute when the mouse get out 
}); 

しかしホバーイベントがまったく動作しません私はDOMがまだ準備ができていないので、これが原因であると信じています!

及びこれを回避するために私はこのようなタイマー設定を使用:私は、これはHTMLメソッドの後すぐにイベントをアタッチする正しい方法ではないことを確信しているので、私はこの質問をした

$('div#my_div').html(new_content); 

window.setTimeout(
    $("div#my_div a.details").hover(function(){   
    $(this).fadeIn(); //code to execute when the mouse get in 
    }, function(){ 
    $(this).fadeOut(); //code to execute when the mouse get out 
    }); 
,100); 

を(多分それは仕事ではなかった!)。

私は誰かが私にそれを行う正しい方法を示すことを願っています。

答えて

0

ライブではなく、デリゲートを使用することをお勧めします。あなたは正しいですhttp://jsfiddle.net/Akkuma/wLDpT/

+0

最初にありがとう、私はあなたの例を試してみました。 – Hidalgo

+0

あなたのコードはelseブロックの命令だけを実行するので、mouseoverでmouseenterを変更しましたが、今は完全に動作します。 – Hidalgo

2

あなたが代わりにあなたができるライブmouseovermouseleaveイベント

$("div#my_div").live({ 
     mouseenter: function() 
     { 

     }, 
     mouseleave: function() 
     { 

     } 
    } 
); 

を使用するとよいでしょう:

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

UPDATE

をあなたのようにそれを行うことができますjQueryのの新しいバージョンではこの

$('body').on('mouseover','#my_div', function(){}); 
$('body').on('mouseout', '#my_div', function(){}); 
+0

、感謝:

はここでデリゲートを使用した例です。 – Hidalgo

+0

あなたは歓迎です – brenjt

2

おそらくlive()メソッドを使用する必要があります。

.live("mouseenter", function() {...}) 
.live("mouseleave", function() {...}); 

UPDATE:誰かが私を投票し、その誰かがここで取得する場合、私はon()ドキュメント(here)を読むことをお勧めしますあなたがhereを読むことができるように、あなたが二つの事象を分離する必要があると思われます以前はliveが廃止されました。また、mouseenter()link)とmouseleave()link)を見るのも面白いかもしれません。考え方はliveと同じです。

0

jqueryの.live関数をチェックアウトすることができます。ライブはそれがはるかに長いバブルを持つことが原因document.body上のデリゲートは、本質的であるとしてここでは、リンク http://api.jquery.com/live/

関連する問題