1. 選擇其中含有特殊符號
W3C規范規定屬性值中不能含有某些特殊字符,但在實際開發過程中,常遇到表達式中含有“#”或“.”等特殊字符的情況,如果按照普通的方式去處理就會出錯,解決此類問題的方法就是使用轉義符轉義。
有如下代碼:
<div id="id#a">aa</div>
<div id="id[2]">cc</div>
按照普通的方式來獲取。例如:
$("#id#a");
$("#id[2]");
將不能獲取到元素,改為轉義符的寫法如下:
$("#id\\#a");
$("#id\\[2\\]");
2. 選擇器中含有空格
選擇器中的空格也是不容忽視的,多一個空格或少一個空格,都會得到截然不同的結果(是由於后代選擇器 和 過濾選擇器 存在不同引起的):
有如下HTML代碼:
<div class="test">
<div style="display:none;">aa</div>
<div style="display:none;">bb</div>
<div style="display:none;">cc</div>
<div class="test" style="display:none;">dd</div>
</div>
<div class="test" style="display:none;">ee</div>
<div class="test" style="display:none;">ff</div>
使用如下jQuery選擇器來分別獲取他們:
var $t_a=$(".test :hidden");
var $t_b=$(".test:hidden");
var len_a=$t_a.length;
var len_b=$t_b.length;
alert("$('.test :hidden')="+len_a); //輸出4
alert("$('.test:hidden')="+len_b); //輸出3
之所以出現不同的結果,是因為后代選擇器與過濾選擇器存在不同
var $t_a=$(".test :hidden"); //帶空格的jQuery選擇器
以上代碼選取的是class為“test”的元素內部的隱藏元素(子元素)。
而以下代碼:
var $t_b=$(".test:hidden"); //不帶空格的jQuery選擇器
選取的是隱藏的class為“test”的元素。