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

溫馨提示×

溫馨提示×

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

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

關于jquery中的bind()、live()、delegate()的區別分析淺析

發布時間:2020-06-24 16:52:05 來源:網絡 閱讀:705 作者:web郭樂 欄目:web開發

近來在研究JS的時候,小碼哥又一次看到jquery中常見的幾種綁定事件的方法:bind(),live(),delegate()。因此,閑來無事,想把他們幾個做一下系統的分析,一遍后面的碼農們能夠一起分享!

先說好,鄙人也算是JS的初學者,很復雜的模塊啥的,也是略懂而已,要是有碼神看到,可別Ma我哈!!

那好,下面就直接進入主題了~

首先,分別介紹一下這三個方法:

1、bind()——$(selector).bind(event,data,function);

    event 為必需,規定添加到元素上的一個或多個事件,由空格分隔多個事件,必需是有效事件

    data  可選,規定傳遞到函數的額外數據,一般用不到

    function  必需,規定當事件發生時運行的函數。

實例:

    $("button").bind("click",function(){

        $("p"),slideToggle();//slideToggle()方法是鼠標點擊切換

    })

還可以對同一個元素添加多個事件:$(selector).bind(event:function,event:function,....);

    $(document).ready(function(){

        $("button").bind(click:function(){

            $("p").slideToggle();

        },

        mouseover:function(){

            $("body").css({'background','red';})

        },

        mouseout:function(){

            $("body").css('background','#fff');

        });

    });

2、live()——$(selector).live(event,data,function);

    event 為必需,規定添加到元素上的一個或多個事件,由空格分隔多個事件,必需是有效事件

    data  可選,規定傳遞到函數的額外數據,一般用不到

    function  必需,規定當事件發生時運行的函數。

實例:

    $("button").live("click",function(){

        $("p").slideToggle();

    })

    live()方法有一個好處就是可以為HTML還不存在(即由JS腳本臨時創建的新元素上添加事件)

3、delegate()——$(selector).delegate(childSelector,event,data,function);

    childSelector  必需,規定要附加事件處理程序的一個或多個子元素。

    event  必需,規定附加到元素上的一個或多個事件。

    由空格分隔多個事件值,必需是有效事件。

    data 可選,規定傳遞到函數的額外數據。

    function 必需,規定當事件發生時運行的函數。

    delegate()方法同樣可以為HTML還不存在(即由JS腳本臨時創建的新元素上添加事件)。

實例:

    $('div').delegate('button','click',function(){

        $("p").slideToggle();

    })

下面就來分析一下他們的異同:

首先,單看簡單的針對某個元素進行事件綁定,他們之間貌似沒有多少區別,都可以實現簡單的事件綁定,且他們都是遵循事件冒泡(事件傳播)方式查詢要綁定事件的元素。

但bind()方法,卻不能像live()和delegate()方法那樣,為未來(即由JS腳本新生成和創建的元素)添加事件綁定。bind()方法只能對HTML中已經存在的元素添加綁定事件。

live()方法有一個最大的缺點,就是它僅能針對直接的CSS選擇器做操作,這使得它變得非常不靈活。

在live()和delegate()之間,唯一的差別就在于它們在對要綁定事件的元素的獲取速度上有差異。在事件傳播上,后者要比前者的速度更快一點,只因后者的限制條件更精準一些。這可以從它們的綁定事件的結構來看出來。

鑒于以上分析,我們更傾向于live()和delegate()方法。而這兩者,有傾向與后者。

但,對于停止事件傳播來說,bind()方法會高效而直接。因此,我們平時用來阻止事件傳播時,會選擇bind()方法:

$('a').bind('click',function(e){

    e.preventDefault();

    e.stopPropagation();

});

只因其他兩種方法由于事件冒泡而耽誤了時間。


向AI問一下細節

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

AI

靖宇县| 永嘉县| 鄱阳县| 鹿邑县| 巩留县| 颍上县| 平谷区| 来安县| 丰台区| 二连浩特市| 武功县| 滨州市| 黄大仙区| 潞城市| 宜州市| 高安市| 班戈县| 扎鲁特旗| 绿春县| 唐山市| 平定县| 包头市| 平度市| 蒙阴县| 永定县| 嘉荫县| 额尔古纳市| 乌兰浩特市| 绍兴县| 岢岚县| 班玛县| 岑溪市| 金门县| 兴安盟| 西畴县| 福州市| 阿坝| 清丰县| 历史| 宜宾市| 长治市|