国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

jQuery1.9+中刪除了live以后的替代方法

2019-11-20 09:40:54
字體:
來源:轉載
供稿:網友

根據jQuery的官方描述,live方法在1.7中已經不建議使用,在1.9中刪除了這個方法。并建議在以后的代碼中使用on方法來替代。

  on方法可以接受三個參數:事件名、觸發選擇器、事件函數。

需要特別注意的是:on方法中間的這個觸發選擇器就是你將要添加的HTML元素的類名、id或者元素名,使用它就可以實現live的效果。

例如我的html文檔中已經有了一個id為parent的div,我將要在這個div內部再動態添加一個class為son的span,然后我為這個span綁定一個事件,那么我需要這樣寫:

$('#parent').on('click','.son',function(){alert('test')});

這個觸發選擇器實際上就是在 JQ內部判斷了一次事件參數的$(e.target).is(selector),只有觸發對象匹配觸發選擇器才會觸發。這是利用了事件冒泡的機制來完成 的,原本的live也是使用冒泡機制所以既然on可以實現那么live也就沒有存在的必要了,只不過為了兼容讓它從1.7茍延殘喘的活到了1.9而已。

  這篇文章也沒啥內容了,接下來就用這個功能做點有意義的事情示范下吧~ 在低版本IE中A標簽在鼠標按下時候會出現虛線邊框,這是由focus造成的。我們只要在全局事件中做點手腳就能解決這個問題。在現代瀏覽器中focus是不冒泡的,但是低版本瀏覽器中可以冒泡。所以對于低版本瀏覽器中對focus使用live是有效的。在jQuery1.9之前的版本我們可以這樣寫:

$("a").live("focus",function(){this.blur();}); jQuery1.9之后由于live被刪除了,所以應該這樣寫:$(document).on("focus","a",function(){this.blur();}); 

還要注意個問題,如果是從live的寫法換成on的寫法別忘了調整調用鏈。因為live的返回值是事件觸發的對象,而使用on則是在容器對象上。

//jQuery1.9-$("#panel").find("div").live("click",function(){alert("x");}).addClass("x");//jQuery1.9+$("#panel").on("click","div",function(){alert("x");}).find("div").addClass("x");   

注意最后的find("div"),其它就沒什么問題了。

下面是官方說明

  http://jquery.com/upgrade-guide/1.9/#live-removed

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 灵台县| 鄂伦春自治旗| 漳平市| 红原县| 安新县| 大石桥市| 衡水市| 兴仁县| 泾源县| 抚顺市| 沂源县| 九寨沟县| 新和县| 娄底市| 木兰县| 策勒县| 本溪市| 武川县| 尉犁县| 台山市| 裕民县| 虞城县| 涞源县| 永川市| 南江县| 东丰县| 新安县| 绥芬河市| 广饶县| 扶沟县| 长汀县| 凤城市| 新建县| 渝中区| 金塔县| 饶阳县| 昌都县| 曲周县| 祥云县| 临安市| 高邑县|