用1.7前后版本jQuery时遇到的坑

最近的项目要做一个网页,使用到了Bootstrap,导入的jQuery版本是

<script type="text/javascript" src="js/jquery-1.11.3.min.js"></script>

同时,里面有一个四级联动的下拉框,在网上找了一个四级联动的demo,修改之后可以使用,但是使用到的jQuery版本是

<script type="text/javascript" src="js/jquery-1.8.0.min.js"></script>

刚开始还不知道1.7版本前的jQuery和1.7版本之后的jQuery还有改动,只是发现当引入较新的jQuery时,Bootstrap的响应式布局(导航条)可以使用,但是四级联动的下拉框就无法使用;当使用版本较老的jQuery版本时,可以使用四级联动的下拉框,但是无法使用Bootstrap的响应式布局(导航条)。

在网上搜索了一下,发现了问题:

<b>从jQuery 1.7开始,on() 函数提供了绑定事件处理程序所需的所有功能,用于统一取代以前的bind()、 delegate()、 live()等事件函数。</b>

仔细检查了一下,发现四级联动的下拉框中用到了 live() 函数来绑定事件。

$('li' , '#City').live('click' , function(){});

改为用 on() 函数的写法应该是:

$('#City').on('click' , 'li', function(){});

特别指出,四级联动的下拉列表中的元素是在jQuery代码中动态添加的。

此外,即使符合条件的元素是on()函数执行后新添加,绑定事件对其依然有效。

附上 jQuery.on() 函数 api 网站:
jQuery.on() 函数 api

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • 原文链接 http://blog.poetries.top/2016/10/20/review-jQuery 关注...
    前端进阶之旅阅读 16,681评论 18 503
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,540评论 25 708
  • 宝贝儿,今天是你出生的第八十九天,上午在家吃吃睡睡玩儿玩儿,下午妈妈带着你和姥姥去了妈妈的学校,这是第一次爸爸不在...
    3237f5d4b965阅读 104评论 0 0
  • 产品概念,必要还需学习一些产品理念 Apple公司的启示 【硬件为软件服务】软件直接服务用户,满足用户需求,而硬件...
    夏花把时间当朋友阅读 494评论 0 1