成人精品一区二区三区中文字幕-成人精品一区二区三区-成人精品一级毛片-成人精品亚洲-日本在线视频一区二区-日本在线视频免费

導航首頁 ? 技術教程 ? 深入理解jQuery之防止冒泡事件
全站頭部文字 我要出現在這里
深入理解jQuery之防止冒泡事件 684 2024-03-03   

冒泡事件就是點擊子節點,會向上觸發父節點,祖先節點的點擊事件。

下面是html代碼部分:

<body>
<div id="content">
  外層div元素
  <span>內層span元素</span>
  外層div元素
</div>

<div id="msg"></div>
</body>

對應的jQuery代碼如下:

<script type="text/javascript">
$(function(){
  // 為span元素綁定click事件
  $('span').bind("click",function(){
    var txt = $('#msg').html() + "<p>內層span元素被點擊.<p/>";//獲取html信息
    $('#msg').html(txt);// 設置html信息
  });
  // 為div元素綁定click事件
  $('#content').bind("click",function(){
    var txt = $('#msg').html() + "<p>外層div元素被點擊.<p/>";
    $('#msg').html(txt);
  });
  // 為body元素綁定click事件
  $("body").bind("click",function(){
    var txt = $('#msg').html() + "<p>body元素被點擊.<p/>";
    $('#msg').html(txt);
  });
})
</script>

當點擊span時,會觸發div與body 的點擊事件。點擊div時會觸發body的點擊事件。

如何防止這種冒泡事件發生呢?

修改如下:

<script type="text/javascript">
$(function(){
    // 為span元素綁定click事件
  $('span').bind("click",function(event){
    var txt = $('#msg').html() + "<p>內層span元素被點擊.<p/>";
    $('#msg').html(txt);
    event.stopPropagation();  // 阻止事件冒泡
  });
  // 為div元素綁定click事件
  $('#content').bind("click",function(event){
    var txt = $('#msg').html() + "<p>外層div元素被點擊.<p/>";
    $('#msg').html(txt);
    event.stopPropagation();  // 阻止事件冒泡
  });
  // 為body元素綁定click事件
  $("body").bind("click",function(){
    var txt = $('#msg').html() + "<p>body元素被點擊.<p/>";
    $('#msg').html(txt);
  });
})
</script>

event.stopPropagation(); // 阻止事件冒泡

有時候點擊提交按鈕會有一些默認事件。比如跳轉到別的界面。但是如果沒有通過驗證的話,就不應該跳轉。這時候可以通過設置event.preventDefault(); //阻止默認行為 ( 表單提交 )。

下面是案例:

<script type="text/javascript">
$(function(){
  $("#sub").bind("click",function(event){
     var username = $("#username").val(); //獲取元素的值,val() 方法返回或設置被選元素的值。
     if(username==""){   //判斷值是否為空
       $("#msg").html("<p>文本框的值不能為空.</p>"); //提示信息
       event.preventDefault(); //阻止默認行為 ( 表單提交 )
     }
  })
})
</script>

html部分:

<body>
<form action="test.html">
用戶名:<input type="text" id="username" />
<br/>
<input type="submit" value="提交" id="sub"/>
</form>

<div id="msg"></div>
</body>

還有一種防止默認行為的方法就是return false。效果一樣。

代碼如下:

<script type="text/javascript">
$(function(){
  $("#sub").bind("click",function(event){
     var username = $("#username").val(); //獲取元素的值
     if(username==""){   //判斷值是否為空
       $("#msg").html("<p>文本框的值不能為空.</p>"); //提示信息
       return false;
     }
  })
})
</script>

同理,上面的冒泡事件也可以通過return false來處理。

<script type="text/javascript">
$(function(){
    // 為span元素綁定click事件
  $('span').bind("click",function(event){
    var txt = $('#msg').html() + "<p>內層span元素被點擊.<p/>";
    $('#msg').html(txt);
    return false;
  });
  // 為div元素綁定click事件
  $('#content').bind("click",function(event){
    var txt = $('#msg').html() + "<p>外層div元素被點擊.<p/>";
    $('#msg').html(txt);
    return false;
  });
  // 為body元素綁定click事件
  $("body").bind("click",function(){
    var txt = $('#msg').html() + "<p>body元素被點擊.<p/>";
    $('#msg').html(txt);
  });
})
</script>

以上這篇深入理解jQuery之防止冒泡事件就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持綠夏網。



主站蜘蛛池模板: 一声所爱·大地飞歌| 少年歌行电视剧演员表| 发如雪 歌词| 速度与激情 电影| 光彩年华| 蝴蝶视频在线观看| 无锡电视台| 无声真相电影免费播放| 电影 英雄| 红色诗词手抄报简单又漂亮六年级| 吕建民| 无内秘书| 天狂传说之巴啦啦小魔仙合集 | 中国式离婚演员表| 上香香灰打卷图解| 激情小视频在线| 宋小莹| 李轻扬| 二年级53天天练语文上册答案| 护工电影| 749局演员表| 肉丝祙挠脚心丨ⅴk| 体方法师| 久纱野水萌| 山西少儿频道| 女神宿舍管理君动漫| 微信图像男| 太原教育电视台| 马会传真论坛13297соm查询官网| 快播电影网怡红院| 绝望的主妇第八季| 卡五星怎么算账| 营业执照注销打什么电话咨询| overwatch| 3844开关电源电路图| 寡妇一级毛片免费看| 雅多维尔围城战| 社会主义道德原则| 古风男头| 凤凰电视台| 太深了太爽了受不了了|

!!!站長長期在線接!!!

網站、小程序:定制開發/二次開發/仿制開發等

各種疑難雜癥解決/定制接口/定制采集等

站長微信:lxwl520520

站長QQ:1737366103