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,水平有待提高
Jan 31 Javascript
document.compatMode介绍
May 21 Javascript
extjs 学习笔记(一) 一些基础知识
Oct 13 Javascript
20行代码实现的一个CSS覆盖率测试脚本
Jul 07 Javascript
javascript运算符——位运算符全面介绍
Jul 14 Javascript
AngularJS 表达式详细讲解及实例代码
Jul 26 Javascript
jQuery实现6位数字密码输入框
Dec 29 Javascript
javascript基础进阶_深入剖析执行环境及作用域链
Sep 05 Javascript
JavaScript自动生成 年月范围 选择功能完整示例【基于jQuery插件】
Sep 03 jQuery
微信小程序实现菜单左右联动
May 19 Javascript
three.js 将图片马赛克化的示例代码
Jul 31 Javascript
jquery插件实现悬浮的菜单
Apr 24 jQuery
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
基于文本的搜索
2006/10/09 PHP
使用array_map简单搞定PHP删除文件、删除目录
2014/10/29 PHP
php可应用于面包屑导航的递归寻找家谱树实现方法
2015/02/02 PHP
tp5.1 框架数据库-数据集操作实例分析
2020/05/26 PHP
jquery1.4后 jqDrag 拖动 不可用
2010/02/06 Javascript
JavaScript 题型问答有答案参考
2010/02/17 Javascript
js 小数取整的函数
2010/05/10 Javascript
jquery入门—访问DOM对象方法
2013/01/07 Javascript
JS日期和时间选择控件升级版(自写)
2013/08/02 Javascript
JQuery中使用Ajax赋值给全局变量异常的解决方法
2014/01/10 Javascript
自编jQuery插件实现模拟alert和confirm
2014/09/01 Javascript
js控制文本框输入的字符类型方法汇总
2015/06/19 Javascript
利用JS制作万年历的方法
2017/08/16 Javascript
Vue组件实例间的直接访问实现代码
2017/08/20 Javascript
Vue进度条progressbar组件功能
2018/04/17 Javascript
微信小程序仿知乎实现评论留言功能
2018/11/28 Javascript
最简单的JS实现json转csv的方法
2019/01/10 Javascript
Vue 3.x+axios跨域方案的踩坑指南
2019/07/04 Javascript
微信小程序实现点击导航标签滚动定位到对应位置
2020/11/19 Javascript
[49:20]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
学习python (1)
2006/10/31 Python
python中bisect模块用法实例
2014/09/25 Python
在Python中使用mechanize模块模拟浏览器功能
2015/05/05 Python
python调用Delphi写的Dll代码示例
2017/12/05 Python
python3+PyQt5实现自定义分数滑块部件
2018/04/24 Python
Python中关键字global和nonlocal的区别详解
2018/09/03 Python
html5小技巧之通过document.head获取head元素
2014/06/04 HTML / CSS
HTML5 canvas基本绘图之文字渲染
2016/06/27 HTML / CSS
JSF面试题:如何管量web层中的Bean,用什么标签。如何通过jsp页面与Bean绑定在一起进行处理?
2012/10/05 面试题
计算机通信工程专业毕业生推荐信
2013/12/24 职场文书
优秀教师主要事迹
2014/02/01 职场文书
教师校本培训方案
2014/02/26 职场文书
高中生操行评语大全
2014/04/25 职场文书
普通话演讲稿
2014/09/03 职场文书
团拜会主持词
2015/07/04 职场文书
如何在Mac上通过docker配置PHP开发环境
2021/05/29 PHP