0

私は.on()そのようなjqueryハンドラーでいくつかのものを作成しています

$('#idhere').on('click', function(){
   //create a couple of divs with a class
   });

ここで、作成したdivにイベントを追加したいので、次のことを試しました。

$('.divcreated').bind('mouseover', function(){
   //do some magic
   });

何らかの理由で、おそらく両方が非同期であるために、2番目のイベントがトリガーされることはありません。2番目のイベントをトリガーするアイデアはありますか?

4

2 に答える 2

1

要素はバインド時に存在する必要があるため、要素の作成後にバインドするか、委任を使用する必要があります-

委任jQuery1.7以降を使用する

$('body').on('mouseover', '.divcreated', function(){
       //do some magic
});

これにより、イベントハンドラーがbody-イベントをバインドするときに存在する-にバインドされます。これは、domの準備ができています。ただし、より近い静的な親要素にバインドする方が効率的です。

于 2012-10-22T21:10:22.143 に答える
1

すでに述べたように、マウスオーバーイベントを登録しようとすると、新しいdivは作成されません。したがって、1つのdivに対して次のようなことを試すことができます。

$('#idhere').on('click', function(){

   // creates the new div and assigns it to the $myNewDiv var
   var $myNewDiv = $( "<div></div>" );

   // register the event...
   $myNewDiv.on( "mouseover", function( event ) { ... }); 

   // add $myNewDiv to a container

});

これで、ソリューションを作成できるようになると思います。

于 2012-10-22T21:05:52.437 に答える