9

私はjQueryを使用して、新しくロードされた<li>要素をいくつかバインドしようとし.hover()ていますが、行き詰まっています。現時点では、コンテンツ<ul>をajaxでリロードしていて、でホバーイベントが.hover();あり<li>ます。もちろん、ホバーイベントはajaxがロードされていないコンテンツで完全に機能します。

mouseover/mouseoutを使用してイベントをバインドできることはわかっています。これは、マウスオーバーがバインドされている現在の要素の子要素にカーソルを合わせると、イベントを中断する/悪い習慣.live();がない場合に適した解決策です。したがって、私が使用している理由は、イベントがキャンセルされることなく、ホバーバウンド要素の子を自由にホバリングできるためです。mouseovermouseout.hover();

bind();どちらもまったく機能していないようですので、私の質問は.. ajaxがロードされた<li>イベントをバインドして、ホバー効果をとして維持しようとすることに何か意味がありますかhover();、それともロールオーバーしてmouseover/mouseoutを使用しlive();て解決しようとする必要がありますホバーの子供たちは他の方法で問題を起こしますか?

成功メッセージ:

success: function(data){ 
           $('ul#list').bind().append("<li>test test</li>");
         }
4

1 に答える 1

8

バインドは次のように機能します。例えば

$('#list').bind('mouseover', function(){})

ただし、ドキュメントが最初に読み込まれたときにイベントをバインドするために使用するのと同じ関数を呼び出すだけでよいと思います。これがドキュメント準備完了ブロック内にある場合は、それを関数に抽出し、ドキュメント準備完了イベントと ajax 成功イベントで同じ関数を呼び出すだけです。

例えば

$(document).ready( function(){

   bindHover( $('#list>li') )

   $.ajax({ success: function(data){
                         bindHover( data.find('li') );
                     },
            url: bla
   });

})

function bindHover($liList){
  $liList.hover( fn, fn )
}
于 2009-06-25T11:34:53.187 に答える