javascript - 将 jquery 监听器添加到动态创建的元素

标签 javascript jquery

我需要向一些动态创建的元素添加一个 jquery 监听器。我一生都无法让它发挥作用。 tag_options 不是动态的,它的子选项是动态的。我尝试了三种方法:

http://jsfiddle.net/nfe2f/

<div id = "tag_options">
    <div class = "tag_option">hover me</div>
</div>

js:

// never works
$('#tag_options').delegate('.tag_option', 'hover', function(event){
 alert();
});


// never works
$("#tag_options").on("hover", "[class='tag_option']", function(event) {   
    alert();
});


// works if not dynamically created
$('#tag_options .tag_option').hover( function(){
    alert();
 });

最佳答案

不再有 hover 事件,并且 delegate 正在逐步淘汰,取而代之的是 on。您需要使用 mouseentermouseleave。我相信你正在为此而努力:

$('#tag_options')
  .on('mouseenter', '.tag_option', function(e){
    /* Wax On */
  })
  .on('mouseleave', '.tag_option', function(e){
    /* Wax Off */
  });

如果您希望将其保留在一个on上,您可以按照palaѕн的建议进行操作。我只是想让它更容易理解:

$('#tag_options').on('mouseenter mouseleave', '.tag_option', function(event){
  if ( event.type === 'mouseenter' ) {
    /* Wax On */
  } else {
    /* Wax Off */
  }
});

关于javascript - 将 jquery 监听器添加到动态创建的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18105920/

相关文章:

javascript - 为什么 setInterval 不执行之前定义的函数?

javascript - 使用 JQuery 插入 DOM 时 CSS 背景图像无法正确缩放

javascript - Chrome 控制台中奇怪的 "e"或 "t"表示什么

javascript - 选择父元素的最后两项,添加类并对它们应用更改->不工作

javascript - 可见时自动淡出 Div

javascript - 将图像移动到预定义的 x,y 位置

javascript - 在 Chrome OS 中检测 "Tablet"模式转换的事件?

javascript - 单元测试 $(document).on

jquery ajax 失败时不解析 json

jquery - 单击后退按钮时呈现的原始 javascript