回答

收藏

动态创建的元素上的事件绑定?

技术问答 技术问答 262 人阅读 | 0 人回复 | 2023-09-12

我有一些代码,我循环浏览页面上的所有选择框,并将.hover将事件绑定到它们,以调整它们的宽度mouse on/off。' j. W5 _0 D4 V/ ^
这发生在页面准备好并且工作正常。
. I8 m+ b, {7 h我遇到的问题是,我在初始循环后通过 Ajax 或 DOM 添加的任何选择框都不会绑定事件。$ _% R5 C$ ]) c
我找到了这个插件(jQuery Live Query Plugin),但是在我的页面上我的页面添加另一个 5k 之前,我想看看是否有人知道直接使用 的方法来做到这一点jQuery 通过其他选项。+ k' j( n1 I; O; }0 ~/ b' D
                                                               
* u0 W- S9 z( V( ]' \. [6 @6 \; J    解决方案:                                                               
- c+ Y* {' R% A                                                                从 jQuery 1.7 开始,您应该jQuery.fn.on在填充选择器参数时使用:" Q  b# s" Z% p, q+ b3 `% f
    8 M) d- A0 G% l3 G  K
  • $(staticAncestors).on(eventName,dynamicChild,function() {}code]解释:
    6 }0 x( o, O, @/ F* q( L
  • 这就是所谓的事件委托,其工作原理如下。事件附加到事件中。staticAncestors静态父级 ( )应处理元素。每次在这个元素或后代元素之一上触发事件,都会触发这个 jQuery 处理程序。然后检查触发事件的元素是否与您的选择器 ( dynamicChild)匹配。您的自定义处理程序函数将在匹配时执行。
    + _# t! C. N5 R7 _/ l6 f# o
  • 在此之前,使用推荐方法live():
    6 b/ l4 w  q# x# m
  • [code]$(selector).live( eventName,function(){} )code]然而,live()在 1.7 中被弃用on(),而在 1.9 被完全删除。live()签名:# r. u8 o# A$ W% _
  • [code]$(selector).live( eventName,function(){} )code]… 可以替换为以下on()签名:8 X5 l4 h9 n! H
  • [code]$(document).on( eventName,selector,function(){} )code]例如,如果您的页面使用类名动态创建元素,dosomething您将事件绑定到已存在的父级(这是这里问题的核心,你需要绑定到存在的东西,而不是动态内容),可以(也是最简单的选择)document. 尽管记住document可能不是最有效的选择。
      p$ O3 X# {3 l( B- _: p! \
  • [code]$(document).on('mouseover mouseout','.dosomething',function()()()()()(///)()()()()()(()()()()()())()()(////)())()()()())()()()///////)()()()())())()())()())())()()()()()()()())()()()()()()())()()()())()()()()()()())()()())()()()())()()()()()()()()()()()()//////)/)/)/)()()()()()()()()()()())()())())())()())()())()())()())()())()()())()())()()()()()())()))()))()))()())())())())()()()())()))()))())())()))()()))()()()))()()()))())())()))())()()())())()))())))))())))()()))())))())))()))()())()())()))()))()()()()()))())))))())())()()()()()))))()))())))))()))))()))())()()))))())()()()()()()()())()))()////////)))))))))))))()))))))))()))))))()()()()()()()())))what you want to happen when mouseover and mouseout     / occurs on elements that match '.dosomething();code]任何父级都可以存在于事件绑定中。[code]$('.buttons').on('click','button',function()()()()()(///)()()()()()(()()()()()())()()(////)())()()()())()()()///////)()()()())())()())()())())()()()()()()()())()()()()()()())()()()())()()()()()()())()()())()()()())()()()()()()()()()()()()//////)/)/)/)()()()()()()()()()()())()())())())()())()())()())()())()())()()())()())()()()()()())()))()))()))()())())())())()()()())()))()))())())()))()()))()()()))()()()))())())()))())()()())())()))())))))())))()()))())))())))()))()())()())()))()))()()()()()))())))))())())()()()()()))))()))())))))()))))()))())()()))))())()()()()()()()())()))()////////)))))))))))))()))))))))()))))))()()()()()()()())))do something here});. J3 V; c  s, }+ I! B. g7 ]
将适用于/ X' u. o/ W4 E. G
       
    ; x! }2 u9 a( ^! }  B/ g! X: M
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则