jquery on动态生成的子动态生成的子事件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery on动态生成的子动态生成的子事件相关的知识,希望对你有一定的参考价值。

我有一个动态添加的div,我想为已经在另一个标签中动态添加的图像设置一个mouseenter事件。添加的div看起来像这样:

<div class="chat_box">

</div>

在添加内容后看起来像这样:

<div class="chat_box">
  <p class="chat">text here <img class="emote" src="emote.png"> more text</p>
</div>

我希望有一个带有表情的图像的mouseenter事件,但我无法让它工作。

我尝试过以下方法:

$('.chat_box').on('mouseenter', '.chat', function(){
  alert();
});

它工作,但如果我尝试使用子选择器

$('.chat_box').on('mouseenter', '.chat > .emote', function(){
  alert();
});

$('.chat_box').on('mouseenter', '.chat > img', function(){
  alert();
});

它不起作用。

答案

这是以前由.live()提供的,但该函数已合并到.on()...它创建了一个事件观察器。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

<div class="chat_box"></div>

<button>Add</button>

<script>
$('button').click(function(){
    $('<div class="chat"><img width=10 height=10 class="emote"></div>').appendTo('.chat_box');
});
$('.chat_box').on('mouseenter', 'img.emote', function(){ alert('test'); });           
</script>

只需定位父对象并让它监视预期的子对象。

以上是关于jquery on动态生成的子动态生成的子事件的主要内容,如果未能解决你的问题,请参考以下文章

Jquery 给动态添加元素添加点击事件

js 为动态添加的元素绑定事件

关于jQuery中动态生成的点击事件触发两次的讨论

Vue3 监听来自动态创建的子组件的事件,$on 替换

JQuery对于动态生成的标签绑定事件失效

jquery 动态生成的input添加change事件