当前位置: 首页 > 面试题库 >

javascript在动态创建的元素上进行事件绑定?

端木骞尧
2023-03-14
问题内容

这个问题的答案是 社区的努力。编辑现有答案以改善此职位。它目前不接受新的答案或互动。

我有一些代码,在其中循环浏览页面上的所有选择框,并将.hover事件绑定到它们上,以使它们的宽度变窄mouse on/off

这在页面准备就绪时发生,并且工作正常。

我的问题是,在初始循环之后,我通过Ajax或DOM添加的所有选择框都没有事件绑定。

我已经找到了这个插件([jQuery Live Query
Plugin](),但是在我使用插件向页面添加另一个5k之前,我想看看是否有人知道直接使用jQuery或通过其他方法做到这一点的方法。


问题答案:

从jQuery 1.7开始, 您应该使用[jQuery.fn.on]:

$(staticAncestors).on(eventName, dynamicChild, function() {});

在此之前 ,推荐的方法是使用live()

$(selector).live( eventName, function(){} );

但是,live()在1.7中弃用on(),而在1.9中完全删除了。该live()签名:

$(selector).live( eventName, function(){} );

…可以替换为以下on()签名:

$(document).on( eventName, selector, function(){} );

例如,如果您的页面正在使用类名动态创建元素,则dosomething可以将事件绑定到 已经存在的父级
(这是问题的小结,您需要绑定到现有的东西,而不要绑定到动态内容),则可以(也是最简单的选择)是document。尽管记住[document可能不是最有效的选择]。

$(document).on('mouseover mouseout', '.dosomething', function(){
    // what you want to happen when mouseover and mouseout 
    // occurs on elements that match '.dosomething'
});

绑定事件时存在的任何父项都可以。例如

$('.buttons').on('click', 'button', function(){
    // do something here
});

适用于

<div class="buttons">
    <!-- <button>s that are generated dynamically and added here -->
</div>


 类似资料:
  • 本文向大家介绍如何使用jQuery在动态创建的元素上绑定事件?,包括了如何使用jQuery在动态创建的元素上绑定事件?的使用技巧和注意事项,需要的朋友参考一下 要在动态创建的元素上绑定事件,您需要动态加载。您可以尝试运行以下代码,以了解如何在动态创建的元素上绑定事件。在这里,我们将在单击按钮时生成一个新的列表项。 示例

  • 问题内容: 我正在上传多个图像,并将它们放置在ondiv必须切换某些类的某些div中。我是否必须将添加onclick事件的部分放在ajax成功函数中?非常感谢! 我正在使用“ on”上的jquery,但似乎不起作用。可能我缺少了一些东西 这是我的代码: Javascript: HTML: 问题答案: 对于动态创建的元素,您必须使用.live()但是,在1.7中不推荐使用,而在中将其完全删除。该签名

  • 问题内容: 是否可以向所有动态生成的元素添加事件侦听器(Javascript)?我不是页面的所有者,因此无法以静态方式添加侦听器。 对于页面加载时创建的所有元素,我使用: 当页面上出现新元素时,我需要一种方法来调用此代码,但是我无法使用jQuery(在项目中无法使用elegate,on等)。我怎样才能做到这一点? 问题答案: 听起来您需要执行委派策略而又不退回图书馆。我在此处的小提琴中发布了一些示

  • 问题内容: 我是jQuery的新手。我写了一段代码,将一张桌子上的产品与另一张桌子上的产品动态地相加,如下所示:正如您在小提琴中看到的那样,这段代码对我来说很好。 现在,我已经使用ajax通过动态生成此产品列表(表2)来操纵了此代码,现在该代码对我不起作用。 正如我已经想过这个缺陷,事情,我想我所有的CSS和JS脚本得到加载与网页的加载速度 抵达动态加载但是该复选框(表2),这就是为什么JS不是娱

  • 问题内容: 我正在竭尽全力试图找出为什么鼠标悬停事件无法与具有从ajax动态创建的元素的.on处理程序一起使用的原因。似乎唯一起作用的是带有.live的代码,但我知道它已被弃用。 但是,当我尝试使用.on时,它将不起作用-无论我尝试了什么变体(document.ready,.mouseover等) 事件处理程序位于代码的底部,因此它们最后执行。有人知道我在做什么错吗? 问题答案: 使用与新生成的元

  • 如题,父元素绑定竖向滚动事件,子元素绑定了横向滚动事件,在子元素上竖向滚动失效? 我的需求是,父元素整体上下可以滚动,其中一块子元素区域是左右滚动的轮播图,左右可滚动,在 ios 12.5.2 iphone 5s 下,在子元素左右滚动的轮播图区域,上滑,无法触发父元素的滚动事件,想问下大家这是什么原因,有没有解决方案?