2011年5月10日 星期二

jQuery Memo

jQuery Memo
1.外部html帶入時
若使用innerHTML 取到的是root node下的內容
outerHTML則會包含Root Node
2.網頁設定編碼為utf-8
HTML檔案本身需以utf-8儲存
載入外部JSON檔案時,也需以utf-8格式儲存
才不會造成亂碼發生
3.取得json物件的所有屬性
若物件為array
items:[
    {xxx},{xxx},{xxx}...
]
可以使用length取得array長度,並進而取得所有資料
若物件非array
items:{
    "title":xxx,
    "name":xxx,...
}
則可用for(prop in obj)方式取得 prop名稱
for(prop in items){
    alert(prop+"="+items[prop])
}

4.對大量物件binding listener

當要對大量的物件設定監聽的事件與要觸發的function,可以使用delegate
$(xx).delegate(指定處理物件,指定觸發事件,執行處理的function);
$("#mytable").delegate("td", "hover", function () {      
    $(this).xxxx
})
指定處理物件值可以是tag name如"td"
可以對class如".myclass"    

5.對物件設定監聽程式

當要對物件設定如Click...等監聽,一定要在物件已經產生的狀態下設定
才會有效,如果在物件尚未產生之前就要把監聽設定好
則需透過livequery plugin來做
例
$(".myclass").livequery("click",function(){})

6.jQuery與DOM物件互轉

1.在jQuery的操作,絕大部分回傳都會是一個jQuery包裹物件
  要將jQuery物件轉成DOM物件,$("'#"+containerID+"'")[0]
2.DOM轉jQuery物件
    用$(dom物件)包裹後即為jQuery物件
3.在jQuery使用each取得所有物件
    each內的this是一個DOM物件,需要$(this)包裝過
    才會變成jQuery物件

7.index

當selector取得一堆的子node要對特定子node操作    
1.透過index取得第幾個物件
    $(".left_box :eq("+_index+")")
2.取得目前物件的index值
    例如有一堆li 由以下可以知道自己是在第幾個
    $(".left_box li").index($(this))

沒有留言: