极速快3大小投注技术|最新极速快3开奖结果

jquery克隆

導語 所有類型節點都會有一個方法就是cloneNode,也就是克隆節點。克隆的操作也是我們常常需要使用的,本來就是一個很簡單的接口,但是還是有一些細節問題需要處理。cloneNode不會復制javascript屬性,比如事件,這個
所有類型節點都會有一個方法就是cloneNode,也就是克隆節點。克隆的操作也是我們常常需要使用的,本來就是一個很簡單的接口,但是還是有一些細節問題需要處理。

cloneNode不會復制javascript屬性,比如事件,這個方法只會復制特性。當然IE有這個BUG它會復制事件處理程序。cloneNode(a)方法接受一個布爾值參數,表示是否深拷貝。

true:表示執行深拷貝,復制本節點以及整個子節點樹。

false:淺拷貝,只復制節點本身。

復制后返回的節點副本屬于文檔所有,但是并沒有父節點。除非使用 appendChild,insertChild(),replaceChild()將它添加到文檔。

關于事件的處理

IE舊版會克隆原生的事件,所以我們需要做克隆的時候先移除掉,當然2.1.1版本是不再兼容低級版本了。所以我們考慮的是jQuery體系的處理,因為這里還沒有涉及到事件的原理,所以我們暫時先初步理解下,jQuery的事件處理是非常nice的,利用了數據緩存的機制,把數據都緩存在內存中而不直接跟dom元素綁定,這樣的好處很多,具體我們在事件交互那一章會超詳細講解。

cloneNode(true)的時候是遍歷的節點,但是不會把對應的事件與數據給復制,但是jQuery.clone方法克隆的時候,是會把該節點上的事件與數據給一并復制過去的,這樣的機制是建立在數據分離的基礎上。簡單來說,jQuery在DOM上做了一個uuid的標記,然后把與這個dom相關聯的所有數據都放到一個內存區域,通過這個uuid映射,這樣我們在深度拷貝 dom 的時候自然也可以把內存的數據給復制一份了,當然這里要注意一個問題,事件是不能被復制的,需要重新綁定了。

因為操作都是跟data_priv與data_user掛鉤的所以我模擬的話實現的代碼量太大了,這里就直接給大概的流程吧。

首先我們elem.cloneNode(true)直接給這個元素克隆一份,我們要做的就是把克隆后的元素加入事件與數據。

jQuery內部的數據都緩存在data_priv中,包括事件,data_user是提供給用戶操作的,用戶的數據。

所以就需要把這個2個緩存給找出來然后混入到新的克隆節點中,jQuery都是提供接口data_priv.access,data_priv.set。

值得注意的事件的復制是需要重新jQuery.event.add綁定的,如果節點是有嵌套的話,需要遍歷每一個元素節點,在每個節點上都要處理事件與數據。

http://www.hlwom.icu/ true jquery克隆 http://www.hlwom.icu/show-13-603-1.html report 1091 所有類型節點都會有一個方法就是cloneNode,也就是克隆節點。克隆的操作也是我們常常需要使用的,本來就是一個很簡單的接口,但是還是有一些細節問題需要處理。cloneNode不會復制javascript屬性,比如事件,這個
TAG:jquery
本站歡迎任何形式的轉載,但請務必注明出處,尊重他人勞動成果
轉載請注明: 文章轉載自:愛思資源網 http://www.hlwom.icu/show-13-603-1.html

[前端插件推薦] Plugin

1 2 3 4
  • jQuery實現逐字逐句顯示插件l-by-l.min.js
  • jQuery帶方向感知的鼠標滑過圖片邊框特效插件
  • jQuery HotKeys監聽鍵盤按下事件keydown插件
  • 響應式無限輪播jQuery旋轉木馬插件
響應式無限輪播jQuery旋轉木馬插件
web前端開發
愛思資源網 Copyright 2012-2014 www.hlwom.icu All rights reserved.(晉ICP備13001436號-1)
极速快3大小投注技术 甘肃十一选五前一走势 手机版偷开视频软件 秒速时时彩有官网吗 足彩胜负平玩法计算器 双色球近500期开奖查询 最新时时后二教程 山东齐鲁风采中奖结果 中国彩吧一更董彩民旧版 华东15选5开奖结果今天 赛车网站出租