2011年7月5日 星期二

jquery選擇器的問題

選擇html畫面上的dom物件進行操作
以往都是要用getElementById(), getElementsByName()等來操作
但有了jquery之後
使用他的選擇器
就可以方便地選取畫面上的元件了

選擇器長這樣: $()
一個錢字號, 後面帶一個小括號
詳細用法可以參考這裡

今天碰上一個jquery選擇器的問題
$('input[name=test]:checked').each(function() {//處理的程式碼});
上面這個意思是說
選取所有input標籤, 其name屬性為test, 且被選取(checked)的元件.
然後逐一將這些元件, 交付function(){//處理的程式碼}去處理

乍看之下沒問題
問題是我程式裡本來是這樣寫的
$('input[name=test][checked]).each(function() {//處理的程式碼});
他用[], 而不是:
妙的是, 經過測試, 
這樣的句子在IE8較低版本(我同事的電腦, IE8版本< 8.0.7601.17514, 確切版本數記不住)可以選到東西
但在較高版本(我的電腦, IE8版本8.0.7601.17514)卻連個鬼都選不到

WHY?

本來我對jquery的處理器雖有概念
但對語法並不熟悉
看了這一頁後,
恍然大悟可能是出在[checked]的關係
應該改為:checked才對
修改後果真可以在IE8版本8.0.7601.17514運行

結論:
要選擇被選取的元件
要用冒號:checked
而不是中括弧[checked]
但無法解是為何在較低版本的IE8,
中括弧[checked]也可以運行??

關於:checked的用法
亦可參考這裡



沒有留言:

張貼留言