jQuery中处理事件冒泡的方法和取消后续内容的方法
一:事件冒泡的意思是:一个大的容器已经设置了事件,如果这个容器里还包容着一个小的容器也设置了自己的事件,那么因为小容器是在大容器里面的,触发小容器的事件同时也等于触发了大容器的事件,有时这并不是我们想要的结果,我们可以通过能力检测来阻止事件冒泡如:
<script type="text/javascript">
$(function () {
$('#da').css('width', '700px').css('height', '300px').css('border', '1px solid Red');
$('dl').css('width', '500px').css('height', '210px').css('border', '1px solid blue');
$('dt').addClass('words').click(function () {
$('dd strong').css('color', '#FF0099');
});
$('dd').css('width', '330px').css('height', '210px').css('border', '1px solid green').css('float', 'left').css('margin', '0px auto');
$('#xiao').css('width', '270px').css('height', '35px');
$('#xiao>img').css('float', 'right');
$('dd .daoyan').click(function () {
$('span').css('font-weight', 'bolder');
})
$('dd>#biaoqian').click(function () {
$('dd .su').css('backgroundColor', '#E0F8EA');
})
$('img[alt=收藏本片]').click(function (event) {
alert('您已收藏成功!');
event = event || window.event;
if (event.stopPropagation) {
//IE浏览器管用
event.stopPropagation();
} else {
event.cancelBubble = true;
}
})
})
</script>
<style type="text/css">
.words
{
width:151px;
height:210px;
border:1px solid yellow;
float:left;
}
</style>
</head>
<body>
<div id='da'>
<dl>
<dt><img src="img/pic.gif" alt="非缘勿扰"/><img src="img/col.gif" alt="收藏本片"/></dt>
<dd><strong>非缘勿扰(共36集)<br/>主演:</strong>苏有朋/秦岚/傅艺伟等<br/><strong class="daoyan">导演:</strong><span>赖水清</span><br /><strong id="biaoqian">标签:</strong><span class="su">苏有朋</span> 国产电视剧 <span class="su">2013</span> 连续剧<br /><strong>剧情:</strong>当代都市,大龄女刘琳、杨阳都在寻找着自己的如意郎君。刘琳偶遇陆氏房产总裁陆西诺,两人成了欢喜冤家,遇到暗恋陆西诺的丁娟的记恨...<a href="#">点击了解更多</a></dd>
</dl>
<div id="xiao"><img src="img/btn.gif" alt="点击播放"/></div>
</div>
</body>
其中<dt><img src="img/pic.gif" alt="非缘勿扰"/><img src="img/col.gif" alt="收藏本片"/></dt>
我的dt标签里放了两张图,我设置了dt的点击事件:
$('dt').addClass('words').click(function () {
$('dd strong').css('color', '#FF0099');
});
那么我的第二张图片点击事件会同时触发两个事件,因为都同在dt标签里
$('img[alt=收藏本片]').click(function (event) {
alert('您已收藏成功!');
})
此时我可以用能力检测的方法判断浏览器的解析能力,根据不同浏览器选用不同方法:
$('img[alt=收藏本片]').click(function (event) {
alert('您已收藏成功!');
//取消事件冒泡,要进行能力检测,也就是分IE和非IE两种情况
//01.第一道能力检测,event对象在IE下写法是window.event,而在
//非IE下直接用event;
event = event || window.event;
//第二道能力检测
if (event.stopPropagation) {
//IE浏览器管用
event.stopPropagation();
} else {
event.cancelBubble = true;
}
})
二:取消后续执行内容如例所示:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript">
//点击a标签,不进行页面跳转
window.onload = function () {
var obj = document.getElementById("myhref");
obj.onclick = function (event) {
//取消默认行为
//return false;
//分浏览器
//IE下
//01.第一道能力检测
event = event || window.event;
if (event.preventDefault) {
//非IE下
event.preventDefault();
} else {
event.returnValue = false;
}
};
}
</script>
</head>
<body>
<a id="myhref" href="http://www.baidu.com">去百度</a>
</body>
</html>
这里的a标签的点击效果本来是要跳转到百度页面的,但是我们通过参数取消默认行为的方式可以让这个点击事件的后续内容不执行。
jQuery中处理事件冒泡的方法和取消后续内容的方法的更多相关文章
- JQuery中事件冒泡
JQuery中事件冒泡 定义 在一个对象上触发某类事件,就会执行此事件程序,如果没有处理事件就会向这个对象的父级对象传播 直至它被处理,最顶层老大为document对象. 作用 事件冒泡允许多个操作被 ...
- JQuery中两个ul标签的li互相移动实现方法
这篇文章主要介绍了JQuery中两个ul标签的li互相移动实现方法,可实现ul标签中li标签内容相互替换的技巧,涉及jQuery操作页面元素的相关技巧,需要的朋友可以参考下 本文实例讲述了JQuery ...
- 恶补jquery(四)jquery中事件--冒泡
事件 当我们在打开一个页面的时候.浏览器会对页面进行解释运行,这实际上是通过运行事件来驱动的.在页面载入事件时,运行Load()事件,是这个事件实现浏览器解释运行代码的过程. 事件机制 事件中的冒泡现 ...
- jQuery中事件冒泡问题及处理
在为一个元素添加事件时,经常会出现的一个问题就是事件冒泡.例如在div中嵌套了一个span元素,为div和span都添加了事件点击,如果点击span会导致span和div元素相继触发监听事件.顺序是从 ...
- jquery中防止冒泡事件
冒泡事件就是点击子节点,会向上触发父节点,祖先节点的点击事件. 下面是html代码部分: <body> <div id="content"> 外层div元素 ...
- jquery中Uncaught TypeError: $(...).ajaxUpload is not a function(…)错误解决方法
错误原因:该函数不是jquery的核心函数,所以需要外部引入ajaxfileupload.js文件,可能是没有引入,或者引入的js文件互相冲突 解决方法:每次进入一个函数之前打印该函数所有的js文件, ...
- jquery中ajax序列化提交form表单的几种方法。
一,ajax主流的方法 $.ajax({ type: 'post', url: 'your url', data: $("form").serialize(), success: ...
- jQuery中hover和blur使用代理delegate无效的解决方法
今天就遇到了这样的小问题: $(document).ready(function(){ $('.status_on').hover(function(){ $(this).html('点击禁用'); ...
- jQuery中toggle与slideToggle以及fadeToggle的显示、隐藏方法的比较
1.区别 ①动画效果的比较: toggle:直接显示.隐藏,如果有[时间参数]且[匹配的元素有宽度属性],则动态效果为左上角-右下角拉卷效果,透明度0-1之间的变化:若有时间参数但是[匹配的元素没有宽 ...
随机推荐
- TOMCAT源码分析(启动框架)
建议: 毕竟TOMCAT的框架还是比较复杂的, 单是从文字上理解, 是不那么容易掌握TOMCAT的框架的. 所以得实践.实践.再实践. 建议下载一份TOMCAT的源码, 调试通过, 然后单步跟踪其启动 ...
- 使用多种客户端消费WCF RestFul服务(三)——.net4.5篇
.net 4.5篇 在.net 4.5下面微软提供了System.Net.Http.dll可以非常方便的使用HTTP请求(其实是用来支持Asp.Net Web Api的,不过我们可以拿过来用) 服务仍 ...
- SQLSERVER 表名数据库名作为变量 必须使用动态SQL(源自网络)
动态语句基本语法: 1 :普通SQL语句可以用exec执行 Select * from tableName exec('select * from tableName') exec sp_execut ...
- 在css中定义滚动条样式
1,Overflow内容溢出时的设置 overflow 水平及垂直方向内容溢出时的设置 overflow-x 水平方向内容溢出时的设置 overflow-y 垂直方向内容溢出时的设置 以上三个属性设置 ...
- PySe-003-Se-WebDriver 启动浏览器之一 - Firefox
此文主要演示 MacOX 下 WebDriver 启动 Firefox 浏览器,因 WebDriver 对 Firefox 浏览器是原生支持的,因而无需像启动其他浏览器一样需要相对应的 driver. ...
- 使用TortoiseGit将代码上传到bitbucket
首先需要有一个bitbucket的账户,这是无疑问的. 比如我本地有一个项目,项目名是 我想把这个项目托管到bitbucket上! 1.首先在bitbucket上创建一个仓库,注意仓库的名字要和项目的 ...
- Java Convert String & Int
To convert a int to string: int num = 123; String str = String.valueOf(num); To convert a string to ...
- Volume rendering
Volume rendering Reconstruction filter UCDAVIS
- Eclipse中文注释乱码解决
将别人的项目或JAVA文件导入到自己的Eclipse中时,常常会出现JAVA文件的中文注释变成乱码的情况,主要原因就是别人的IDE编码格式和自己的Eclipse编码格式不同. 总结网上的建议和自己的体 ...
- 字符串拷贝函数strcpy写法_转
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> ...