国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

js中的preventDefault與stopPropagation詳解

2024-05-06 16:00:14
字體:
供稿:網(wǎng)友
本篇文章主要是對(duì)js中的preventDefault與stopPropagation進(jìn)行了介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助

首先講解一下js中preventDefault和stopPropagation兩個(gè)方法的區(qū)別:
preventDefault方法的起什么作用呢?我們知道比如<a >百度</a>,這是html中最基礎(chǔ)的東西,起的作用就是點(diǎn)擊百度鏈接到,這是屬于<a>標(biāo)簽的默認(rèn)行為,而preventDefault方法就是可以阻止它的默認(rèn)行為的發(fā)生而發(fā)生其他的事情??匆欢未a大家就明白了:

復(fù)制代碼 代碼如下:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>JS阻止鏈接跳轉(zhuǎn)</title>
<script type="text/javascript">
function stopDefault( e ) {
if ( e && e.preventDefault )
   e.preventDefault();
    else
   window.event.returnValue = false;

    return false;
}
</script>
</head>
<body>
<a >百度</a>
<script type="text/javascript">
var test = document.getElementById('testLink');
test.onclick = function(e) {
   alert('我的鏈接地址是:' + this.href + ', 但是我不會(huì)跳轉(zhuǎn)。');
   stopDefault(e);
}
</script>
</body>
</html>


此時(shí)點(diǎn)擊百度鏈接,不會(huì)打開,而只是彈出一個(gè)alert對(duì)話框。

preventDefault方法講解到這里,stopPropagation方法呢?講stopPropagation方法之前必需先給大家講解一下js的事件代理。

事件代理用到了兩個(gè)在JavaSciprt事件中常被忽略的特性:事件冒泡以及目標(biāo)元素。當(dāng)一個(gè)元素上的事件被觸發(fā)的時(shí)候,比如說鼠標(biāo)點(diǎn)擊了一個(gè)按鈕,同樣的事件將會(huì)在那個(gè)元素的所有祖先元素中被觸發(fā)。這一過程被稱為事件冒泡;這個(gè)事件從原始元素開始一直冒泡到DOM樹的最上層。對(duì)任何一個(gè)事件來說,其目標(biāo)元素都是原始元素,在我們的這個(gè)例子中也就是按鈕。目標(biāo)元素它在我們的事件對(duì)象中以屬性的形式出現(xiàn)。使用事件代理的話我們可以把事件處理器添加到一個(gè)元素上,等待事件從它的子級(jí)元素里冒泡上來,并且可以很方便地判斷出這個(gè)事件是從哪個(gè)元素開始的。

stopPropagation方法就是起到阻止js事件冒泡的作用,看一段代碼。

復(fù)制代碼 代碼如下:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xHTML1/DTD/xHTML1-transitional.dtd">
<HTML XMLns="http://www.w3.org/1999/xHTML" lang="gb2312">
<head>
<title> 阻止JS事件冒泡傳遞(cancelBubble 、stopPropagation)</title>
<meta content="JS,事件冒泡,cancelBubble,stopPropagation" />
<script>
function doSomething (obj,evt) {
 alert(obj.id);
 var e=(evt)?evt:window.event;
 if (window.event) {
  e.cancelBubble=true;// ie下阻止冒泡
 } else {
  //e.preventDefault();
  e.stopPropagation();// 其它瀏覽器下阻止冒泡
 }
}
</script>
</head>
<body>
<div>
 <p>This is parent1 div.</p>
 <div>
  <p>This is child1.</p>
 </div>
 <p>This is parent1 div.</p>
</div>
<br />
<div>
 <p>This is parent2 div.</p>
 <div>
  <p>This is child2. Will bubble.</p>
 </div>
 <p>This is parent2 div.</p>
</div>
</body>
</HTML>


大家運(yùn)行一下上面的代碼就明白了。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 台安县| 江油市| 咸阳市| 大厂| 天峻县| 玛曲县| 连山| 新昌县| 永昌县| 南昌市| 八宿县| 安阳市| 双流县| 桐庐县| 全南县| 桓台县| 汝阳县| 漳浦县| 教育| 巴里| 红河县| 芦溪县| 永登县| 辉县市| 山阳县| 安阳县| 浪卡子县| 巨鹿县| 招远市| 汝阳县| 永泰县| 泗阳县| 汤阴县| 兖州市| 龙里县| 泉州市| 兴宁市| 永靖县| 高尔夫| 张家川| 呼和浩特市|