第二个异步事件,第二个取决于第一个

时间:2012-10-22 21:01:21

标签: jquery ajax events asynchronous event-handling

我在.on() jquery处理程序上创建了一些东西,比如

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

现在我还想在创建的div上添加一个事件,我试过了:

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

由于某种原因,第二个事件永远不会被触发,因为它们都是异步的。任何触发第二次事件的想法?

2 个答案:

答案 0 :(得分:1)

如前所述,当您尝试注册mouseover事件时,不会创建新的div。所以,你可以尝试这样的一个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

});

我认为现在你可以编写你的解决方案了。

答案 1 :(得分:1)

绑定时必须存在一个元素,因此您必须在创建元素或使用委托后绑定它 -

使用委托jQuery 1.7 +

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

将事件处理程序绑定到body - 在绑定事件时存在 - 这是在dom准备就绪。但是,它更有效地绑定到更接近的静态父元素。