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

事件不适用于动态创建的元素

冯俊英
2023-03-14
问题内容

我正在竭尽全力试图找出为什么鼠标悬停事件无法与具有从ajax动态创建的元素的.on处理程序一起使用的原因。似乎唯一起作用的是带有.live的代码,但我知道它已被弃用。

$(".dropdown ul li").live("mouseover", function() {
alert('mouseover works');
});

但是,当我尝试使用.on时,它将不起作用-无论我尝试了什么变体(document.ready,.mouseover等)

$(".dropdown ul li").on("mouseover", function() {
alert('mouseover works');
});

事件处理程序位于代码的底部,因此它们最后执行。有人知道我在做什么错吗?


问题答案:

使用.on与新生成的元素 动态事件代表团
http://api.jquery.com/on/ -在你的主要选择是存在的 静态父

$(".static-parent").on("event1 event2", ".dynamic-child", function() {

或者您的情况:

$(".dropdown").on("mouseover", "li", function() {
   alert('mouseover works!!!!!!!!!');
});

委派事件的优势在于,它们可以处理来自后代元素的事件,这些事件以后会添加到文档中。通过选择保证在附加委托事件处理程序时会出现的元素,您可以使用委托事件来避免频繁附加和删除事件处理程序的需要。例如,如果事件处理程序想要监视文档中的所有冒泡事件,则此元素可以是Model-
View-
Controller设计中视图的容器元素,也可以是文档。在加载任何其他HTML之前,document元素在文档的开头可用,因此可以安全地在其中附加事件,而无需等待文档准备就绪。

还要确保使用 DOM ready 函数

jQuery(function($) { // DOM is now ready and $ alias secured

    $(".dropdown").on("mouseover", "li", function() {
       alert('mouseover works!!!!!!!!!');
    });

});


 类似资料:
  • 问题内容: 我的要求是创建等于json数组计数的按钮数。我成功地在jquery中动态创建了按钮。但是单击动作不会调用jquery的.ready函数中的方法。我曾尝试在SO中搜索。找不到解决方案,但对我没有任何帮助。我对jquery非常陌生。请帮忙… 我的代码:jQuery: 编辑-示例.on方法代码-单独的文件:工作-谢谢 问题答案: 动态创建按钮是因为,如果使用jquery 1.7,则需要使用m

  • 问题内容: 我正在使用jQuery CSS函数设置某些元素的样式 这可行,但是页面加载后会动态创建部分元素。这应该是 我被创建的事件困住了。有任何想法吗? 问题答案: 创建的元素没有事件(无论如何都无法通用)。你可以 将规则添加到样式表,以便将其自动应用于新创建的元素 创建元素时,链接 css() 方法: 动态创建一个新的样式表:

  • 问题内容: 我有一段jQuery,它会循环遍历给定div()中的每个元素,并且每次单击范围时都会发出JavaScript警报。如果的值是静态的,则效果很好。 但是,如果我使用如下代码: jQuery代码不会触发。奇怪的是 我的问题是:我的Click事件是否不适用于动态创建的项目?我想我必须在我的文档中添加准备好的内容或心跳脚本(每100毫秒触发一次)来关联事件? 问题答案: 做这个: 其中,在其中

  • 本文向大家介绍JQuery事件委托(适用于给动态生成的脚本元素添加事件),包括了JQuery事件委托(适用于给动态生成的脚本元素添加事件)的使用技巧和注意事项,需要的朋友参考一下 最近一段时间打了一个大仗,现在总算消停点,才有时间来做个总结吧算是: 移动端遇到一个项目,是一个列表的侧滑栏,在我这里用jq写的交互事件。自测各方面都挺好的,美滋滋的给了研发。研发也美滋滋的开始开发。 但是,好景不长。。

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

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