jQuery绑定事件on()与弹窗的简要概述


Posted in Javascript onApril 27, 2016

页面上经常会有弹窗,有的弹窗是动态生成的,有的弹窗是在页面底部隐藏的,对于动态生成的弹窗,如果要监听弹窗的事件,可以使用jQuery的事件绑定on()方法实现。

如图,弹窗是js动态生成的,通过点击某个链接弹出,弹窗中的“立即去使用”链接点击后,实现的效果是关闭弹窗,并跳转到锚点。

jQuery绑定事件on()与弹窗的简要概述

这个a标签是:

<astyle="display:" title="立即去使用" target="_blank" gid="167" href="http://act.vip.xunlei.com/vip/2016/51dps/#gamelist" class="co_vip tdu ">立即去使用</a>

我们要监听弹窗里面的click事件,但这个弹窗本身是动态生成的,因此我们要监听body,通过on()事件绑定,当动态生成这个弹窗时,可以监听到click方法:

function jump_to_anchor() {
$("body").on("click", "span[name='msgbox_info'] a, .act-pop-table a", function (e) {
link = $(this).attr('href');
if (link == 'http://act.vip.xunlei.com/vip/2016/51dps/#gamelist') {
e.preventDefault();
msgExit();
window.location.href = link;
}
});
}

这里实际上是绑定了两个a标签的事件绑定,都是当这个链接是某个url,阻止默认行为,并调用关闭弹窗方法,跳转到该链接,也就是锚点。

下面给大家介绍jQuery on()方法绑定动态元素的点击事件

之前就一直受这个问题的困扰,在jQuery1.7版本之后添加了on方法,之前就了解过,其优越性高于live(),bind(),delegate()等方法,在此之前项目中想用这个来测试结果发现,居然动态生成的标签点击了没反应,而live方法却能够支持,于是乎到处查资料,问网友,结果找了好久在一篇文章中终于找到了答案。。。

jQuery 使用on绑定动态生成的元素时,不能直接用该对象操作,而是选择其非动态生成的父节点然后再找到本身才能达到效果。大家看看源码就知道了。生成的按钮基数项on方法点击无效live方法有效。

比如页面上有下边两个元素:

<input type="button" name="addbtn" value="按钮添加" />
<div id="test"></div>

使用下边的jQuery代码大家可以对比看看区别:

$(function () {
var a = 1,
$_div = $('#test');
$('input[name=addbtn]').on('click', function () {
$_div.append('<input type="button" name="test' + a + '" value="按钮' + a + '"/>');
a++;
});
//偶数项点击事件
$_div.on('click', 'input[name^=test]:even', function () { 
alert('我是有效的on方法,你能看见我吗:' + this.value);
});
//奇数项绑定的点击事件 发现点击无效,而是用live方法却能够支持
$('input[name^=test]:odd').on('click', function () { 
alert('我是无效的on方法,你不能看见我');
});
//奇数项绑定的点击事件 发现点击无效,而是用live方法却能够支持
$('input[name^=test]:odd').live('click', function () {
alert('我是live方法,你能看见我吗:' + this.value);
});
});

代码简单,就不放演示页了,如果有什么不明白的,欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
多种方式实现JS调用后台方法进行数据交互
Aug 20 Javascript
jQuery实现列表自动滚动循环滚动展示新闻
Aug 22 Javascript
javascript实现禁止复制网页内容汇总
Dec 30 Javascript
使用js获取地址栏参数的方法推荐(超级简单)
Jun 14 Javascript
wap手机端解决返回上一页的js实例
Dec 08 Javascript
获取IE浏览器Cookie信息的方法
Jan 23 Javascript
彻底解决 webpack 打包文件体积过大问题
Jul 07 Javascript
vue 实现 tomato timer(蕃茄钟)实例讲解
Jul 24 Javascript
TypeScript开发Node.js程序的方法
Apr 30 Javascript
怎么使用javascript深度拷贝一个数组
Jun 06 Javascript
JS使用正则表达式提交页面验证的代码
Oct 16 Javascript
vue 项目打包时样式及背景图片路径找不到的解决方式
Nov 12 Javascript
jQuery.form插件的使用及跨域异步上传文件
Apr 27 #Javascript
js实现纯前端的图片预览
Apr 27 #Javascript
简介BootStrap model弹出框的使用
Apr 27 #Javascript
js调用webservice构造SOAP进行身份验证
Apr 27 #Javascript
javascript实现延时显示提示框特效代码
Apr 27 #Javascript
JS延时器提示框的应用实例代码解析
Apr 27 #Javascript
基于JS实现Android,iOS一个手势动画效果
Apr 27 #Javascript
You might like
PHP版国家代码、缩写查询函数代码
2011/08/14 PHP
取得单条网站评论以数组形式进行输出
2014/07/28 PHP
PHP中使用localhost连接Mysql不成功的解决方法
2014/08/20 PHP
如何使用PHP给图片加水印
2016/10/12 PHP
php微信开发之谷歌测距
2018/06/14 PHP
JavaScript严格模式禁用With语句的原因
2014/10/20 Javascript
使用Vue.js创建一个时间跟踪的单页应用
2016/11/28 Javascript
vue实现留言板todolist功能
2017/08/16 Javascript
JS自定义函数实现时间戳转换成date的方法示例
2017/08/27 Javascript
angular中两种表单的区别(响应式和模板驱动表单)
2018/12/06 Javascript
JavaScript键盘事件常见用法实例分析
2019/01/03 Javascript
记录vue项目中遇到的一点小问题
2019/05/14 Javascript
JavaScript实现单英文金山打字通
2020/07/24 Javascript
Webpack中loader打包各种文件的方法实例
2019/09/03 Javascript
原生JavaScript实现日历功能代码实例(无引用Jq)
2019/09/23 Javascript
从零开始用webpack构建一个vue3.0项目工程的实现
2020/09/24 Javascript
[51:28]EG vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/16 DOTA
Python中实现远程调用(RPC、RMI)简单例子
2014/04/28 Python
python定时检查某个进程是否已经关闭的方法
2015/05/20 Python
python如何实现反向迭代
2018/03/20 Python
python ipset管理 增删白名单的方法
2019/01/14 Python
Python数据类型之Tuple元组实例详解
2019/05/08 Python
讲解Python3中NumPy数组寻找特定元素下标的两种方法
2019/08/04 Python
Europcar英国:英国汽车和货车租赁
2017/01/21 全球购物
Android interview questions
2016/12/25 面试题
厂长助理岗位职责
2013/12/27 职场文书
员工生日活动方案
2014/08/24 职场文书
行政专员岗位职责范本
2014/08/26 职场文书
2014年组织委员工作总结
2014/12/01 职场文书
2014年财务工作总结与计划
2014/12/08 职场文书
蓬莱阁导游词
2015/02/04 职场文书
世界遗产的导游词
2015/02/13 职场文书
2015年小学开学寄语
2015/02/27 职场文书
房地产置业顾问工作总结
2015/10/23 职场文书
《小蝌蚪找妈妈》教学反思
2016/02/23 职场文书
解决Python字典查找报Keyerror的问题
2021/05/26 Python