麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

淺談jQuery中事情的動態綁定

2019-11-19 17:37:49
字體:
來源:轉載
供稿:網友

在jQuery的開發過程中,我們往往需要處理各種事件,例如click(),hover()等。在jQuery的API中,我們可以使用不同的方法來將這些事件綁定到特定的元素中。今天這篇文章中,我們將要介紹如何使用bind(),on(),live()和delegate()方法來綁定特定的事件,什么情況下使用,什么情況下不適用它們。希望能夠幫助大家更好的了解和使用jQuery的時間處理方法。

一、bind()方法

使用較早版本jQuery的教程或者應用中,我們往往使用bind()方法來將事件綁定到特定的元素上,如下:

<section id="container"> <img class="scv" src="images/scv.gif" alt="Terran unit" /></section>$('.scv').bind('click', function(){  $('#container').append('<img class="scv" src="images/scv.gif" alt="Terran unit" />');});

如果你查看相關jQuery1.7.1最新文檔的話,大家應該知道最新的jQuery中bind目前其實最后也是調用on()方法來實現的,所以呢,如果現在大家使用最新jQuery版本(目前為1.7.1)的話,盡量避免使用bind()方法。

如果大家點擊運行這個示例肯定會發現,當點擊第一個圖片時,會生成新的圖片,但是如果你點擊新生成的圖片,不會繼續執行添加新圖片的操作。為什么會這樣呢? 因為使用bind綁定的元素是頁面上所有存在的class="scv"的元素,新生成的元素添加到DOM,并沒有綁定我們添加的click方法。那么怎么讓新的圖片也可以綁定我們click方法呢。我們可以使用clone()方法,如下:

$('.scv').bind('click', function(){ $(this).clone(true).appendTo('#container');});

我們這里使用clone方法來生成一個新的圖片,并且添加到#container容器中。這里我們使用clone方法參數true,代表克隆的元素同時克隆綁定的方法。

二、live()方法

在老的jQuery版本中,我們有一個方法專門用來處理動態生成的元素的事件綁定-live(),使用live()方法可以將方法綁定的效果應用到已存在或者新創建的DOM元素。代碼如下:

$('.scv').live('click', function(){ $(this).clone().appendTo('#container');});

live()調用過程如下:

我們首先將click方法綁定到了Document,然后,查找Document里是否有.scv這個元素。這個過程對于性能來說可能比較浪費,所以我們可以使用如下帶參數方法優化方式:

$('.scv', '#container').live('click', function(){ $(this).clone().appendTo('#container');});

以上代碼中我們使用#container作為綁定的上下文,jQuery將會在#container這個元素中查詢.scv元素。

三、Delegate()方法

在最新的jQuery版本中,我們最好不要使用live()方法,因為它已經被放棄了,這里我們使用delegate方法來指定事件綁定的上下文,如下:

$('#container').delegate('.scv','click', function(){  $(this).clone().appendTo('#container');});

大家可以看到以上代碼中,我們首先設定了方法綁定的上下文-#container,然后,尋找class為.scv的元素,再綁定click方法。

注意:這里克隆后添加到的元素應該是你定義的上下文,否則,新生成的圖片綁定不上click方法。

四、on()方法

.on( events [, selector ] [, data ], handler(eventObject) )

這是jQuery官方給出的Api,其實在最新版本的jQuery類庫中,所有以上方法在后面其實都是調用on()方法,所以,如果你開發最新版本的jQuery,完全可以使用on()方法來處理所有的事件綁定,避免過多的方法調用。如下:

$('.scv').on('click', function(){  $(this).clone(true).appendTo('#container');});

如果要保證你動態添加的東西可以綁定上handler,那么$("selector").on()中的selector應該是更高的級別,父div,body或者document等。

五、總結

總的來說,最新的jQuery版本中,所有的方法基本最后都使用on()方法來處理,如果你針對新版本的jQuery做開發,大家可以考慮使用delegate()和on()方法處理事件綁定,雖然以前方法也可以用,但是大都都已經退出歷史舞臺。

以上這篇淺談jQuery中事情的動態綁定就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日本在线高清 | 一级免费a| 国产精品啪一品二区三区粉嫩 | 55夜色66夜色国产精品视频 | 欧美日韩在线免费观看 | 成人在线观看免费观看 | 日本a级免费 | a网站在线 | 中文字幕国 | 国产精品一区视频 | 伊人yinren22综合网色 | 一级黄色国产视频 | 精品一区二区三区不卡 | 欧美成人理论片乱 | 懂色av懂色aⅴ精彩av | 性高跟鞋xxxxhd4kvideos | 国产一级爱c视频 | 国产精品免费一区二区 | 神马视频我不卡 | 九色com| 蜜桃精品视频 | 成人三级黄色片 | 麻豆一二区 | 1级黄色毛片 | 黄色免费电影网址 | 毛片大全| av在线播放亚洲 | 九九热精品免费视频 | 国产在线精品一区二区三区 | 羞羞答答www网站进入 | 久久精热 | 欧美精品久久久久久久久老牛影院 | 久久精品国产99国产精品澳门 | 国产自在线 | 久久99精品久久久久久国产越南 | 在线免费观看欧美 | 国产精品久久久久影院老司 | 色污视频在线观看 | 免费国产在线观看 | 免费a级毛片大学生免费观看 | 欧美成人性生活片 |