整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          jQuery 移除或禁用html元素的點擊事件方法匯總

          、CSS方法

          .disabled { pointer-events: none; }

          二、jQuery方法

          方法一

          $(this).click(function (event) {
              event.preventDefault();
          }

          方法二

          $('a').live('click', function(event) {
              alert("抱歉,已停用!");
              event.preventDefault();
          });

          注:此方法中的live亦可以為on, bind等方法

          方法三

          $('.disableCss').removeAttr('onclick'); //去掉標簽中的onclick事件

          通過removeAttr方法來控制html標簽的屬性已達到啟用或禁用事件。另, 使用這種方式也可以控制其他事件或其他效果。

          方法四

          $('#button').attr('disabled',"true");//添加disabled屬性
          $('#button').removeAttr("disabled"); //移除disabled屬性

          注:和方法三是一樣的, 不過disabled屬性一般用在類型為button或submit的input上

          <div class="subcategories">這里有點擊事件</div>
          <div class="subcategories">這里有點擊事件</div>
          <div class="subcategories">這里有點擊事件</div>
          <script type="text/javascript">
          //阻止點擊事件
          $(function() {
              $(".subcategories").click(function(event) {
                  event.stopPropagation();
              });
          });
          </script>

          么是JS事件冒泡?

          在一個對象上觸發某類事件(比如單擊onclick事件), 如果此對象定義了此事件的處理程序, 那么此事件就會調用這個處理程序, 如果沒有定義此事件處理程序或者事件返回true,

          那么這個事件會向這個對象的父級對象傳播, 從里到外, 直至它被處理(父級對象所有同類事件都將被激活), 或者它到達了對象層次的最頂層, 即document對象(有些瀏覽器是window)。

          如何來阻止Jquery事件冒泡?

          通過一個小例子來解釋

          <!DOCTYPE html>
          <html>
          <head runat="server">
          <title>Porschev---Jquery 事件冒泡</title>
          <script src="jquery-1.3.2-vsdoc.js" type="text/javascript"></script>
          </head>
          <body>
            <form id="form1" runat="server">
              <div id="divOne" onclick="alert('我是最外層');">
                <div id="divTwo" onclick="alert('我是中間層!')">
                  <a id="hr_three" href="http://www.baidu.com" mce_href="http://www.baidu.com"onclick="alert('我是最里層!')">點擊我</a>
                </div>
              </div>
            </form>
          </body>
          </html>

          比如上面這個頁面,

          分為三層:divOne是第外層,divTwo中間層,hr_three是最里層;

          他們都有各自的click事件,最里層a標簽還有href屬性。

          運行頁面,點擊“點擊我”,會依次彈出:我是最里層---->我是中間層---->我是最外層

          ---->然后再鏈接到百度.


          這就是事件冒泡, 本來我只點擊ID為hr_three的標簽, 但是確執行了三個alert操作。

          事件冒泡過程(以標簽ID表示):hr_three----> divTwo----> divOne 。從最里層冒泡到最外層。

          如何來阻止?

          1.event.stopPropagation();

          <script type="text/javascript">
          $(function() {
          $("#hr_three").click(function(event) {
          event.stopPropagation();
          });
          });
          <script>

          再點擊"點擊我", 會彈出:我是最里層, 然后鏈接到百度


          2.return false;

          如果頭部加入的是以下代碼

          <script type="text/javascript">
          $(function() {
            $("#hr_three").click(function(event) {
              return false;
            });
          });
          <script>

          再點擊"點擊我", 會彈出:我是最里層, 但不會執行鏈接到百度頁面


          由此可以看出:

          1.event.stopPropagation();

          事件處理過程中,阻止了事件冒泡,但不會阻擊默認行為(它就執行了超鏈接的跳轉)


          2.return false;

          事件處理過程中,阻止了事件冒泡,也阻止了默認行為(比如剛才它就沒有執行超鏈接的跳轉)


          還有一種有冒泡有關的:

          3.event.preventDefault();

          如果把它放在頭部A標簽的click事件中, 點擊"點擊我"。

          會發現它依次彈出:我是最里層---->我是中間層---->我是最外層, 但最后卻沒有跳轉到百度

          它的作用是:事件處理過程中, 不阻擊事件冒泡, 但阻擊默認行為(它只執行所有彈框, 卻沒有執行超鏈接跳轉)

          覽網頁時,當從A頁面點擊跳轉到B頁面后,一般情況下,可以點擊瀏覽器上的“后退”按鈕返回A頁面。

          如果進入B頁面后,B頁面想讓訪問者留下,禁止返回,是否可以實現呢?

          這簡直是要控制瀏覽器的行為,雖然有些邪惡,但確實可以實現,使用特殊的JavaScript代碼就可實現。

          方法如下:

          實現原理:

          監聽瀏覽器的popstate事件,該事件會在用戶點擊瀏覽器的回退按鈕時被觸發。

          然后,使用History.pushState()方法向當前瀏覽器會話的歷史堆棧中添加一個陷阱狀態,該狀態會使“回退”操作無效。

          JS源碼:

          <script>

          //瀏覽器返回鍵事件

          pushHistory();

          window.addEventListener("popstate", function(e) {

          //判斷移動端

          var userAgentInfo = navigator.userAgent;

          var Agents = new Array("Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod");

          var equipmentType = false;

          for (var v = 0; v < Agents.length; v++) {

          if (userAgentInfo.indexOf(Agents[v]) != -1) {

          equipmentType = true;

          break;

          }

          }

          if (equipmentType) {

          $("#mask-back").show();

          $("#mask-back .back-close").on("click", function() {

          $("#mask-back").hide();

          })

          }

          pushHistory(); //注,此處調用,可以讓用戶一直停留著這個頁面

          }, false);

          function pushHistory() {

          var stateeee = {

          title: "title",

          url: "#"

          };

          window.history.pushState(stateeee, "title", "#");

          }

          </script>

          測試方法:

          建立兩個文件:a.html、b.html。

          a文件內容簡單寫一句代碼:

          <a href="b.html">goto b.html</a>。

          b文件內容寫入上面的源碼。

          打開a頁面,點擊鏈接進入b頁面,這時再點擊瀏覽器上的“后退”按鈕,會發現:操作無效,無法后退。

          提升強度:

          這個黑暗的技巧,雖然使用了不常見的技術方法,但查看頁面源碼很容易發現其實現原理。

          為了保護代碼、防止代碼被分析,可以對上面的JavaScript代碼加密,加密使用JShaman。

          進入JShaman官網,貼入代碼:

          在配置中,勾選“字符串加密”:

          然后生成混淆加密的JavaScript代碼:

          復制粘貼回b文件:

          這時,代碼成為加密狀態,雖然不影響運行,是萬萬不可能了。


          主站蜘蛛池模板: 无码午夜人妻一区二区不卡视频 | 国产精品视频一区二区三区经| 亚洲bt加勒比一区二区| 秋霞日韩一区二区三区在线观看| 91久久精品国产免费一区| 国模私拍一区二区三区| 成人影片一区免费观看| 精品亚洲一区二区三区在线观看| 一区二区精品视频| 久久AAAA片一区二区| 成人无码AV一区二区| 狠狠综合久久AV一区二区三区| 中文字幕一区二区区免| 国产另类TS人妖一区二区| 看电影来5566一区.二区| 久久国产精品视频一区| 日韩人妻精品一区二区三区视频| 日韩精品无码一区二区三区 | 精品无码国产一区二区三区51安 | 中文字幕在线观看一区| 熟女少妇丰满一区二区| 日本在线一区二区| 国产精品亚洲午夜一区二区三区 | 久久精品一区二区三区日韩| 日产精品久久久一区二区| 97人妻无码一区二区精品免费| 亚洲午夜一区二区三区| 成人精品视频一区二区| 一区二区三区免费视频观看 | 国产成人AV一区二区三区无码| 精品无码国产一区二区三区AV| 日本无卡码一区二区三区| 国产一区二区三区亚洲综合 | 久久精品国产亚洲一区二区三区 | 老湿机一区午夜精品免费福利| V一区无码内射国产| 亚洲高清偷拍一区二区三区| 亚洲无线码一区二区三区| 国产AV午夜精品一区二区三区 | 久草新视频一区二区三区| 无码精品人妻一区二区三区人妻斩|