最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于event.cancelBubble和event.stopPropagation()的區(qū)別介紹

 更新時間:2011年12月11日 22:57:30   作者:  
cancelBubble用于ie的阻止冒泡事件,event.stopPropagation()用于firefox和chrome等其他瀏覽器的疑惑介紹。
首先我在網(wǎng)上看到不少文章大體上分為兩個(不正確)觀點:
1. cancelBubble用于ie的阻止冒泡事件,event.stopPropagation()用于firefox和chrome等其他瀏覽器。
先不講上面是對是錯
先看一個例子:(測試環(huán)境:chrom5.0.275.7, moz3.6.4, opera10.53, ie6,7,8)
復(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>
<title>無標題頁</title>
</head>
<body onclick="alert('body');">
<input id="Button1" type="button" value="button" onclick="clickBtn(event)" />
<script language="javascript" type="text/javascript">
function clickBtn(event)
{
event=event?event:window.event;
event.cancelBubble=true;
alert(event.cancelBubble);
}
</script>
</body>
</html>

經(jīng)過測試:
a,chrom5.0.275.7, opera10.53, ie6,7,8在這幾個瀏覽器中 , cancelBubble是有效的,并且可以阻止事件冒泡,使body的onclick不能觸發(fā)。只觸發(fā)button的click
alert(event.cancelBubble);輸出結(jié)果true
b,在 moz3.6.4版本內(nèi),是不能阻止body的onclick的,但是alert(event.cancelBubble);輸出結(jié)果仍然是true ,我想這應(yīng)該是event.cancelBubble只是給event添加一個屬性,并且賦值為true;
當把js代碼改成這樣時:
復(fù)制代碼 代碼如下:

<script language="javascript" type="text/javascript">
function clickBtn(event)
{
event=event?event:window.event;
event.stopPropagation();
alert("123");
}
</script>

即可有效阻止。當然在chrome,opera中的 event.stopPropagation();也是有效的,
結(jié)論一:以上說明 event.cancelBubble在新版本chrome,opera瀏覽器中已經(jīng)支持,就差moz了,其實個人認為event.cancelBubble比event.stopPropagation()更好,不僅從英文意思上。所以希望moz再發(fā)新版本 也支持。這樣就兼容了
2.還有就是經(jīng)??吹年P(guān)于事件順序的問題:
不完全準確的結(jié)論(自認為)
ie:源事件元素->>父級元素事件->>body-->>document
moz:等其他瀏覽器與上面相反
先看一個例子:
復(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>
<title>無標題頁</title>
</head>
<body onclick="alert('body');">
<div onclick="clickBtn(event)" style="width:100px;height:100px; background:#666;">
<input id="Button1" type="button" value="button" onclick="alert('btn');" />
</div>
<script language="javascript" type="text/javascript">
function clickBtn(event)
{
event=event?event:window.event;
event.stopPropagation();
alert("123");
}
</script>
</body>
</html>

如果按照上面的觀點 我現(xiàn)在點擊button 事件從 body---->div----->button,,,,那么就是 先alertbody然后再觸發(fā)div彈出123,由于阻止冒泡,所以button的click不會觸發(fā)。
但經(jīng)過我們測試。moz還是按照由內(nèi)向外觸發(fā)。正確的執(zhí)行alert("btn")--->>alert("123")----阻止冒泡 不觸發(fā)body的click事件
到這你是不是會懷疑上面不正確,不過上面的講法對用addListenter和attachEvent添加的事件是正確的()。如:
復(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>
<title>無標題頁</title>
</head>
<body>
<ul id='ul'>
<li id='li1'>List Item1</li>
<li id='li2'>List Item2</li>
</ul>
<script language="javascript" type="text/javascript">
function init(){
if(!!document.all){
document.getElementById('li1').attachEvent('onclick', function(event){
alert('li1');
})
document.getElementById('li2').attachEvent('onclick', function(event){
alert('li2');
})
document.getElementById('ul').attachEvent('onclick', function(event){
alert('ul');
//event.cancelBubble = true;
alert(event.stopPropagation);
});
}else{
document.getElementById('li1').addEventListener('click', function(event){
alert('li1');
}, true)
document.getElementById('li2').addEventListener('click', function(event){
alert('li2');
}, true)
document.getElementById('ul').addEventListener('click', function(event){
event=event?event:window.event;
event.stopPropagation();
alert('ul');
}, true);
}
}
init();
</script>
</body>
</html>

用這種方法 是符合的。執(zhí)行結(jié)果是觸發(fā)ul的click事件然后由于阻止了冒泡所以此時你點擊li時,其本身的click事件不觸發(fā)。(順便說一句,用這種動態(tài)添加事件的方法,好像 event.cancelBubble在moz中也有效了不過在chrome和moz中有區(qū)別)

相關(guān)文章

  • jQuery 3.0中存在問題及解決辦法

    jQuery 3.0中存在問題及解決辦法

    這篇文章主要介紹了jQuery 3.0中存在問題及解決辦法的相關(guān)資料,需要的朋友可以參考下
    2016-07-07
  • jQuery提示插件alertify使用指南

    jQuery提示插件alertify使用指南

    alertifyjs是一個非侵入式,可定制的JavaScript通知組件。包括可定制的對話框,和右下角消息彈出框。完全可定制的警報,確認和提示對話框、完全自定義的通知系統(tǒng)、回調(diào)參數(shù)處理包括“確定“和”取消“按鈕的點擊、允許對話框排隊
    2015-04-04
  • jQuery中ajax的具體使用

    jQuery中ajax的具體使用

    本文將介紹jQuery中如何使用Ajax以及通過代碼詳解其使用方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-10-10
  • jquery添加div實現(xiàn)消息聊天框

    jquery添加div實現(xiàn)消息聊天框

    這篇文章主要為大家詳細介紹了jquery添加div實現(xiàn)消息聊天框,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • 自動設(shè)置iframe大小的jQuery代碼

    自動設(shè)置iframe大小的jQuery代碼

    自動設(shè)置iframe的寬度在應(yīng)用中還是比較廣泛的,本文使用jquery實現(xiàn)一下,感興趣的朋友可以參考下
    2013-09-09
  • jQuery插件zTree實現(xiàn)獲取一級節(jié)點數(shù)據(jù)的方法

    jQuery插件zTree實現(xiàn)獲取一級節(jié)點數(shù)據(jù)的方法

    這篇文章主要介紹了jQuery插件zTree實現(xiàn)獲取一級節(jié)點數(shù)據(jù)的方法,結(jié)合實例形式分析了jQuery插件zTree針對節(jié)點的遍歷與獲取操作相關(guān)技巧,需要的朋友可以參考下
    2017-03-03
  • 使用jquery為table動態(tài)添加行的實現(xiàn)代碼

    使用jquery為table動態(tài)添加行的實現(xiàn)代碼

    最近,有需要做一個動態(tài)的給table,添加行,用了點時間,算是做成了。已測試過,但如果發(fā)現(xiàn)有什么bug,可以留言,歡迎拍磚。大家一起進步。
    2011-03-03
  • select標簽?zāi)M/美化方法采用JS插件

    select標簽?zāi)M/美化方法采用JS插件

    select標簽的外觀問題很惱人,各個瀏覽器都不一致,單單就IE,一個版本就一個長相,還不能用CSS修飾,接下來將本人對select的美化方法共享出來,感興趣的朋友可以參考下
    2013-04-04
  • jQuery實現(xiàn)字符串按指定長度加入特定內(nèi)容的方法

    jQuery實現(xiàn)字符串按指定長度加入特定內(nèi)容的方法

    這篇文章主要介紹了jQuery實現(xiàn)字符串按指定長度加入特定內(nèi)容的方法,實例分析了jQuery操作字符串的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • jQuery實現(xiàn)帶滾動導(dǎo)航效果的全屏滾動相冊實例

    jQuery實現(xiàn)帶滾動導(dǎo)航效果的全屏滾動相冊實例

    這篇文章主要介紹了jQuery實現(xiàn)帶滾動導(dǎo)航效果的全屏滾動相冊,涉及jQuery針對頁面圖片元素與鼠標事件的相關(guān)操作技巧,需要的朋友可以參考下
    2015-06-06

最新評論

明星| 文安县| 江陵县| 湟中县| 河曲县| 绥滨县| 台南市| 南木林县| 东乌| 五原县| 乌鲁木齐市| 宁河县| 加查县| 武宁县| 永和县| 耒阳市| 获嘉县| 台州市| 咸宁市| 大城县| 青川县| 开平市| 莫力| 平山县| 新竹市| 郯城县| 盐津县| 临湘市| 股票| 石泉县| 板桥市| 喜德县| 河北区| 五台县| 西华县| 漠河县| 喜德县| 宣武区| 莒南县| 抚宁县| 崇明县|