0

我正在.on()像这样的 jquery 处理程序上创建一些东西

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

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

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

由于某种原因,第二个事件永远不会被触发,可能是因为它们都是异步的。有什么想法可以触发第二个事件吗?

4

2 回答 2

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

});

我认为现在您将能够编写您的解决方案。

于 2012-10-22T21:05:52.437 回答
1

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

使用委托 jQuery 1.7+

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

这会将事件处理程序绑定到body- 在您绑定事件时存在 - 已准备好 dom。不过,它更有效地绑定到更接近的静态父元素。

于 2012-10-22T21:10:22.143 回答