第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定

bind()、live()、delegate()的區(qū)別分析淺析

標(biāo)簽:
JavaScript

近来在研究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();

});

只因其他两种方法由于事件冒泡而耽误了时间。


點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報(bào)

0/150
提交
取消