91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

事件綁定的幾種常見方式

發布時間:2020-06-14 14:26:08 來源:網絡 閱讀:500 作者:蓓蕾心晴 欄目:web開發

在項目開發中,經常遇到綁定事件不起作用,或者事件綁定多次,導致重復觸發。

1.事件綁定的幾種常見方式(以click事件為例)

jquery:

  $(selector).click(function(){...})

  $(selector).bind("click",function(){...})

  $(selector).live("click",function(){...})

  $(document).delegate("selector","click",function(){...})

$(selector).on("click",function(){...})

  雖然有以上四種基本方式綁定,但無論你用哪一種,底層實現都是由on事件綁定完成,唯一的區別就是書寫方便和個人習慣而已。

  bind方法

  會給每一個符合selector的元素添加click執行函數,即:將click事件綁定到所有設置了的selector元素上,如果動態添加了元素,之前綁定事件也起作用

  live方法

  將事件綁定在document上,所有事件觸發冒泡到根節點document的時候,判斷是否為click事件、并且是否為selector元素都符合則執行事件函數

  delegate方法

  原理上delegate方法和live方法很類似,都是傳遞選擇器和執行函數兩個參數到document上判斷,

$(document).delegate("selector","click",function(){...})

  約等于

$("selector").live("click",function(){...})

[注意:live事件,jQuery 1.7以后版本使用on代替live,且移動設備safari瀏覽器不支持live事件]

【穿插解決方案:

移動設備safari瀏覽器不支持live事件

方法一:

首先要給綁定click事件的元素加上樣式:cursor: pointer;

然后再用live綁定事件

'selector').live('click', () {alert('你點我了'

如果方法一對你無效,你也可以用

方法二:

同樣也給綁定click事件的元素加上樣式:cursor: pointer;

然后用on來綁定事件,jquery1.7后推薦用on來動態綁定事件,因為比live更高效

$(document).on('click', 'selector', function() {
            alert('你點我了');        
});

】  

唯一的區別在于delegate的性能會比live稍好一些,因為live方法需要遍歷整個dom去查selectordelegate只需要監測document就夠了,想要更深入了解可以自己去網上查閱下。

  on方法

  on的綁定原理和bind差不多,但是on在性能上占優勢。

2.事件重復綁定的可能原因

  大量使用ajax

  將所有事件寫在一個大方法里,如:

  var clickEvent = function(){

    $(a).bind(...);

    $(b).bind(...);

  }

  在大量使用ajax時,為了觸發事件會在success里調用clickEvent方法,然后由于其他地方需要觸發同樣的事件又會調用clickEvent,這樣很容易導致多次觸發。

  解決方案:避免這樣使用

   嵌套元素的事件冒泡

  解決方案:

  e.preventDefault()//阻止默認

      e.stoppropagation()//阻止冒泡

   頻繁使用trigger函數

  可能有時候的需求需要觸發某個特定事件,這時我們會想當然使用trigger觸發事件,但是卻沒有考慮到帶來的隱患。尤其是一個事件去trigger另一個事件

解決方案:阻止事件冒泡,見上,

  或者使用triggerhandler(慎用,不支持chrome貌似)

Javascript事件綁定的幾種方式

buttonClick事件為例:

<button id="btn">click me</button>function clickBtn() {

    alert('click!');

}

1、直接在元素上綁定回調函數 <button id="btn" me</button>

2JS獲取DOM元素對象后,對onclick屬性賦值,綁定事件:        document.getElementById('btn').onclick=clickBtn;

3JS獲取DOM對象后,調用對象的addEventListener函數綁定事件:document.getElementById('btn').addEventListener('click',clickBtn);


現階段主流瀏覽器兼容的綁定事件方式就這3


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泸水县| 巴中市| 台江县| 锦屏县| 闽清县| 南涧| 仁怀市| 枝江市| 彰化市| 修武县| 翼城县| 海南省| 岚皋县| 望都县| 朝阳市| 宁安市| 涡阳县| 泗洪县| 延吉市| 十堰市| 奉化市| 翁牛特旗| 公主岭市| 辉南县| 安西县| 铜梁县| 马鞍山市| 天津市| 泸西县| 颍上县| 天气| 渝北区| 娱乐| 会理县| 中阳县| 新闻| 金溪县| 苗栗市| 巨野县| 乐至县| 达日县|