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

首頁 > 編程 > JavaScript > 正文

JS模擬bootstrap下拉菜單效果實例

2019-11-20 09:40:24
字體:
來源:轉載
供稿:網友

本文實例講述了JS模擬bootstrap下拉菜單效果。分享給大家供大家參考,具體如下:

模擬bootstrap下拉菜單

在工作中要切一個效果:點擊導航欄,則出現下列菜單,但是當點擊其他地方的時候,就隱藏子菜單,效果有點類似于bootstrap 的“下拉菜單”

由于bootstrap的子菜單的樣式與設計不同,因此需要自己寫一個類似的效果

當點擊某個控件的時候,則顯示出下拉菜單,但是,當點擊空白的地方的時候怎么讓其自動隱藏呢?

起初的想法,給body綁定一個onclick事件,當點擊空白的地方由于事件冒泡,觸發click body的事件,但是問題來了,點擊控件的時候,同樣會觸發body的click事件,導致下拉菜單顯示出來之后,有被收縮回去了,因此這個思路不正確

由于bootstrap已經實現了這個功能,查看其源代碼,找到了解決思路:
給document綁定事件(隱藏其子菜單),當觸發控件的方法時則阻止其冒泡,不讓其觸發綁定

<!-- 篩選導航欄 --><div class="border_b_bottom_3eee text-center width_40 float_left active" style="z-index: 999">  <div class="margin_bottom_10 margin_top_10 ">    <span onclick="showOrHideItem(this,event)" class="title">      分類      <span class="caret"></span>    </span>    <ul class="list-unstyled all_width sqh_absolute sqh_line_height_25 sqh_tmp_bj_ff border_b_bottom_eee sqh_position_top_100 sqh_position_left_0 display_none" data-show="hide" style="z-index: 999;">      <li class=" margin_left_10 margin_right_10 sqh_pointer border_b_bottom_eee" onclick="jumpTo(this)" target="https://www.baidu.com">        <span class="float_left">家政</span>        <span class="float_right icon iconfont sqh_line_height_15"></span>        <span class="clearfix"></span>      </li>      <li class=" margin_left_10 margin_right_10 sqh_pointer border_b_bottom_eee" onclick="jumpTo(this)" target="https://www.baidu.com">        <span class="float_left">蔬菜</span>        <span class="float_right icon iconfont sqh_line_height_15"></span>        <span class="clearfix"></span>      </li>      <li class=" margin_left_10 margin_right_10 sqh_pointer sqh_font_color_red" onclick="jumpTo(this)" target="https://www.baidu.com">        <span class="float_left">零食</span>        <span class="float_right icon iconfont sqh_line_height_15"></span>        <span class="clearfix"></span>      </li>    </ul>  </div></div><div class="text-center border_b_bottom_3eee width_40 float_left">  <div class="margin_bottom_10 margin_top_10 border_b_right_eee">    <span onclick="showOrHideItem(this,event)" class="title">      分類      <span class="caret"></span>    </span>    <ul class="list-unstyled all_width sqh_absolute sqh_line_height_25 sqh_tmp_bj_ff border_b_bottom_eee" data-show="hide" style="top:100%;left: 0px;z-index: 999;display: none">      <li class=" margin_left_10 margin_right_10 sqh_pointer border_b_bottom_eee" onclick="jumpTo(this)" target="https://www.baidu.com">        <span class="float_left">家政1</span>        <span class="float_right icon iconfont sqh_line_height_15"></span>        <span class="clearfix"></span>      </li>      <li class=" margin_left_10 margin_right_10 sqh_pointer border_b_bottom_eee sqh_font_color_red" onclick="jumpTo(this)" target="https://www.baidu.com">        <span class="float_left">蔬菜1</span>        <span class="float_right icon iconfont sqh_line_height_15"></span>        <span class="clearfix"></span>      </li>      <li class=" margin_left_10 margin_right_10 sqh_pointer" onclick="jumpTo(this)" target="https://www.baidu.com">        <span class="float_left">零食1</span>        <span class="float_right icon iconfont sqh_line_height_15"></span>        <span class="clearfix"></span>      </li>    </ul>  </div></div><div class="text-right border_b_bottom_3eee text-center width_20 float_left">  <div class="margin_bottom_10 margin_top_10" onclick="showSearch(this,event)">    <span class="icon iconfont font_14 display_block padding_left_5"></span>  </div>  <!-- 顯示搜索框 -->  <div class=" sqh_tmp_bj_ff">    <div class="sqh_absolute sqh_line_height_25 sqh_tmp_bj_ff search_cont" style="top:58%;right: 0px;z-index: 999;display: none;" data-search="hide">      <div class="margin_left_15 ">        <div class="sqh_relative" style="margin-right: 80px;">          <span class="icon iconfont font_14 sqh_absolute padding_left_5" style="left: 0px;top:0px;"></span>          <input class="in_search all_width padding_left_30 sqh_tmp_bj_f3 sqh_border_radius_20" placeholder="搜索" onclick="stopEvent(this,event)" type="text" value="">        </div>        <div class="float_right" style="width: 80px;">          <button type="button" class="btn btn-e4005a" style="padding: 4px 12px;">搜索</button>        </div>      </div>    </div>  </div></div><script>$(function(){  //給document綁定事件  $(document).on("click",function(){    //找到控件是ul并且包含屬性data-show="show"的控件,如果有,則讓其隱藏起來    $("ul[data-show='show']").slideUp("slow");  });  $(document).on("click",function(){    //找到控件是div并且包含屬性data-show="show"的控件,如果有,則修改其css屬性。    $("div[data-search='show']").css("display","none").css("width","32%");  });});//顯示或關閉篩選條件function showOrHideItem(obj,event){// alert(arguments.callee);// alert(showOrHideItem.caller);  var $currentObj = $(obj);  //隱藏所有的下拉列表  $("ul[data-show='show']").hide();  //清除所有active類  $currentObj.closest(".row").find("div.active").removeClass("active");  //給當前div添加選中樣式  $currentObj.closest(".float_left").addClass("active")  var $ul = $currentObj.closest("div").find("ul");  //ul是展開狀態  if($ul.data("show") == "show"){    $ul.slideUp("slow");    $ul.attr("data-show","hide");  }else{    //ul是展開狀態    $ul.slideDown("slow");    $ul.attr("data-show","show");    //阻止事件冒泡    event.stopPropagation();  }}//展示搜索框function showSearch(obj,event){  var $currentObj = $(obj).closest(".float_left").find(".search_cont").css("display","block");  $currentObj.animate({    width: "100%"  }, 1000 );  $currentObj.attr("data-search","show");  //阻止事件冒泡  event.stopPropagation();}function stopEvent(obj,event){  //阻止事件冒泡  event.stopPropagation();}</script>

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《JavaScript切換特效與技巧總結》、《JavaScript查找算法技巧總結》、《JavaScript動畫特效與技巧匯總》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結

希望本文所述對大家JavaScript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 德昌县| 淮安市| 鄂托克旗| 墨玉县| 沙洋县| 游戏| 五莲县| 虞城县| 开封县| 阳新县| 卢氏县| 墨竹工卡县| 霍林郭勒市| 临邑县| 沙河市| 洛川县| 张家界市| 阆中市| 大石桥市| 泽普县| 台安县| 桂阳县| 平安县| 上杭县| 大埔区| 社会| 广灵县| 饶河县| 庆安县| 绥芬河市| 绥滨县| 阜新| 碌曲县| 宽甸| 公安县| 北京市| 鹤峰县| 叶城县| 铁岭县| 永顺县| 安泽县|