十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專(zhuān)業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
小編給大家分享一下jquery on bind之間有哪些區(qū)別,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、微信小程序開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了通河免費(fèi)建站歡迎大家使用!
JQuery從1.7+版本開(kāi)始,提供了on()和off(),進(jìn)行事件處理函數(shù)的綁定和取消。這2個(gè)API與JQuery最初提供的bind()和unbind()有很多相似的地方,也有一些不同之處。bind和unbind的詳細(xì)介紹,可以參考這篇文章。
on()和bind()的函數(shù)簽名如下:
bind(type, [data], fn) on(type,[selector],[data],fn)
可以看到2個(gè)函數(shù)的區(qū)別在于:是否支持selector這個(gè)參數(shù)值。由于javascript的事件冒泡特性,如果我們?cè)诟冈厣献?cè)了一個(gè)事件處理函數(shù),當(dāng)子元素上發(fā)生這個(gè)事件的時(shí)候,父元素上的事件處理函數(shù)也會(huì)被觸發(fā)。如果使用on的時(shí)候,不設(shè)置selector,那么on與bind就沒(méi)有區(qū)別了。
上面這段代碼,如果我們使用bind()在parent上綁定了click事件處理函數(shù),當(dāng)點(diǎn)擊a或者b按鈕的時(shí)候,都會(huì)執(zhí)行事件處理函數(shù)。如果我們希望點(diǎn)擊a的時(shí)候觸發(fā),點(diǎn)擊b的時(shí)候不觸發(fā),那么可以使用on,代碼如下
$("#parent").on("click","#a",function(){ alert($(this).attr("id")); });
可以看到:on()函數(shù)的參數(shù)selector就是為了在事件冒泡的時(shí)候,讓父元素能夠過(guò)濾掉子元素上發(fā)生的事件。如果使用了bind,那么就沒(méi)有這個(gè)能力,子元素上發(fā)生的事件一定會(huì)觸發(fā)父元素事件。
還有一點(diǎn)需要注意:on綁定的事件處理函數(shù),對(duì)于未來(lái)新增的元素一樣可以,和delegate效果相同,而bind則不行。
看完了這篇文章,相信你對(duì)jquery on bind之間有哪些區(qū)別有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!