2014年1月29日 星期三

使用jQuery的attr注意事項

這篇其實是寫給自己看的,最近在做一個階層式選單,所有資料都是使用ajax拿回來的,連第一層也是。所以頁面一打開,他會去讀第一層的資料,點第二層之後去拿第三層,點第三層去拿第四層....

但是為了避免資源浪費,所以拿過的資料不要重複拿,不要看的時候就把他隱藏起來,要看再打開讓他看,這時需要2個控制變數,一個判斷是否有拿過資料,一個判斷是否要打開或隱藏這個元素

所以我很自然的 取了 data, open 當做變數名稱放在html tag裡面使用,但是open在html5裡面居然是一個keyword,雖然使用$(this).attr('open', 'true')可以正確設置open='true',但是使用$(this).attr('open')取回值,他一律回open!!!!!!!

又不是歐噴醬,幹嘛一直回我歐噴!!!!!!
所以以後最好避免使用open當做tag的名稱...切記...

本次重點整理

  1. 要使用attr取得tag的內容,最好初始的html就有該tag名稱,不然他一律回undefined,直到你用attr設定了該tag的值
  2. html tag一律為字串,所以設定$(this).attr('data', true)跟$(this).attr('data', 'true')之後,取回內容一律為字串的true,建議一開始寫入就寫字串,比較不會混淆
  3. 千萬別用open當做tag名稱,不然他會變歐噴醬。
  4. 使用attr設定tag值為false時會使得該tag消失,下次想用attr取回時會回傳undefined,要非常注意,解決方式是設置字串的false就好

沒有留言: