Jquery有live函数,那,如何用原生的Js绑定还未出现的元素的事件呢?

Jquery有live函数,那,如何用原生的Js绑定还未出现的元素的事件呢?,第1张

.live()背后神奇的地方就在于它并不将事件绑定到你选定的elements上,而实际上是绑定到了DOM树的跟节点,而是在element中就像一个参数一样进行传递。

那么当你点击一个元素时,事件就会在DOM树上往上传递,直至到达根节点。这个事件的触发器已经在根节点被.live()创建。这个触发方法将首先检测被点击的目标看是否和.live()调用的选择器相匹配。如果匹配,那么绑定的方法就会执行了。

因为不管你在根节点内点击了什么,根节点的事件都会被触发,当你点击加入到根节点的任何元素时这个检查都会发生。

比如你要给一个还没有添加在页面中的id为“ABC”元素添加click事件。

实际上你要给document元素添加click事件。

并且在document的click回调函数中,判断事件源event.target。然后判断它的ID是“ABC”则执行相应的事件函数。类似这样。

1、新建一个静态页面bind.html,并引入jquery核心文件。

2、在<body></body>标签中,插入一个button按钮,添加id属性值。

3、在<script></script>标签中,添加按钮点击事件,利用on()方法绑定。

4、保存代码并运行项目,打开浏览器查看界面效果,点击按钮查看控制台。

5、将on()方法改为bind()方法,然后保存代码,点击按钮查看打印结果。

6、在jQuery3.0以下版本中,可以使用delegate()方法绑定点击事件。

7、除了上述之外,还有live()方法,不过这个方法jQuery1.7后就被废弃了。

可以用事件委托,jquery提供on()方法(jquery 1.7.0 以上版本)来委托绑定事件:

<ul class="list">

    <li><a href="javascript:">导航1</a></li>

    <li><a href="javascript:">导航2</a></li>

</ul> $('.list').find('a').on('click', function(){

    $(this).addClass('active').siblings().removeClass('active')

})

这样.list里通过js动态创建的a节点也能响应click事件。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11497945.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存