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

jQuery .live()vs .on()方法,用于在加载动态html后添加click事件

丌官浩旷
2023-03-14
问题内容

我正在使用jQuery v.1.7.1,其中显然不推荐使用.live()方法。

我遇到的问题是,使用以下方法将html动态加载到元素中时:

$('#parent').load("http://...");

如果我尝试在之后添加click事件,则不会使用以下两种方法之一注册事件:

$('#parent').click(function() ...);

要么

// according to documentation this should be used instead of .live()
$('#child').on('click', function() ...);

实现此功能的正确方法是什么?它似乎只对.live()有效,但我不应该使用该方法。请注意,#child是动态加载的元素。

谢谢。


问题答案:

如果您希望单击处理程序适用于动态加载的元素,则可以在父对象(不会动态加载)上设置事件处理程序,并为其提供一个与动态对象匹配的选择器,如下所示:

$('#parent').on("click", "#child", function() {});

事件处理程序将附加到该#parent对象,并且只要单击事件在源于的事件上冒泡#child,它就会触发您的单击处理程序。这称为委托事件处理(事件处理委托给父对象)。

之所以这样做,是因为#parent即使该#child对象尚不存在,您也可以将事件附加到该对象上,但是当它后来存在并被单击时,click事件将冒泡到该#parent对象,它将看到它起源于#child和有一个事件处理程序可以单击#child并触发您的事件。



 类似资料:
  • 问题内容: 所以我有这个按钮,它将在表中添加新行,但是我的问题是,在执行append方法之后,它不再侦听click事件。 单击添加新条目,然后单击表单名称。 HTML 问题答案: 使用上: 这样,即使在绑定事件处理程序之后添加了单击,也可以将单击委派给具有class的任何元素。

  • 问题内容: 我本周刚开始使用AngularJS进行一个新项目,所以我必须尽快加快速度。 我的要求之一是动态添加html内容,并且该内容可能带有click事件。 因此,我在下面的代码Angular代码中显示了一个按钮,当单击该按钮时,它会动态添加另一个按钮。单击动态添加的按钮,应该添加另一个按钮,但是我无法让ng- click来处理动态添加的按钮 工作代码示例在此处 http://plnkr.co/

  • 问题内容: 我正在尝试进行变量替换,同时也使它可以通过ngClick单击。 我做了一个小矮人演示(单击按钮,观察输入框保持不变) 标记: 角度的东西: 问题是:为什么单击按钮时不触发。应该在输入字段中设置值’foobar’。 问题答案: 同时,有一个针对该问题的官方解决方案: 无需编写自定义指令即可进行编译。 有关更多信息:https : //github.com/angular-translat

  • 我要在按钮的click事件上向html表中添加一行。在那一行中,我有一个包含li元素的单元格。我已经为li元素分配了click事件。当我点击李的事件被解雇了很多次,我不知道为什么...好心的帮助。

  • 本文向大家介绍动态加载jQuery的方法,包括了动态加载jQuery的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了动态加载jQuery的方法。分享给大家供大家参考。具体如下: 希望本文所述对大家的jQuery程序设计有所帮助。

  • 问题内容: 我刚开始接触Angular,但过去几周一直在使用它,并且设法解决了我遇到的大多数问题。然而,这让我感到难过。 我有一个应用程序,该应用程序从Twitter提取推文,然后使用角度过滤器提取所有URL,并将其设置为链接样式。该部分工作正常,但客户认为来自Twitter的链接不安全,因此他们希望在每次单击链接时触发免责声明。足够简单- 我劫持了链接并将换成一个。这是发生问题的地方- 不起作用