前端框架對頁面的損害+如何判斷一個dom是否存在某個屬性
目錄
進入主題
- 今天遇到一個問題就是引發了我對各種前端框架的思考。
- 首先我個人認為前端js+css框架,多數其實原理是這樣的:
- 寫頁面的時候使用框架提供的css類。
- 然後框架通過這些預定義樣式提供美觀的介面。
- 涉及到功能的則是通過jquery的選擇器根據class選擇到dom元素,然後對dom元素進行操作。
- 完畢
- 如上所述,框架會對頁面dom元素進行簡單的修改。
我的經歷
- 今天我使用框架,使用了框架的dialog,我的dialog中有個checkbox哦。然後我又呼叫相關方法destroy掉dialog之後。發現我的checkbox倒是沒丟,但是checkbox的value屬性沒了(我原始程式碼中checkbox的value是設定了的)。
- 問題解釋:其實這個問題說明的就是,當框架去把我的某個form或者div修改為dialog的時候肯定對dom進行修改。然後再呼叫方法destroy掉dialog的時候會復原。但是這個復原是如何復原呢?比如A->B,復原是按照一定規則B->C呢?還是B->A呢?我想此處我用的這個框架肯定是根據框架自身形成dialog的規則進行倒回去的操作了一遍,而不是從頁面找到了我原先的dom進行復原。
- 正好checkbox的value我用到了,鬱悶了好久。
特此記下造福後人
如何判斷一個dom是否存在某個屬性
- 關於如何判斷一個dom是否存在某個樣式jquery提供了非常遍歷的方法hasClass。
- 但是卻沒提供方法判斷是否存在某個屬性。
- 現提供一個方法如下(這個是摘自網路):
比如我們要判斷a標籤是否包含rel屬性:
如果存在某個屬性$(“a”).attr(“rel”)會返回 rel的值,如果不存在 rel屬性則會返回”undefined”。
if($("a").attr("rel")=="undefined")
這個判斷永遠不會不成立。因為型別不相同。undefined 就是 undefined型別。所以改為:
if(typeof($("a").attr("rel")) == "undefined")
typeof是求變數型別。