發現有些選擇器中的帶空格,起初並沒有在意,但是當寫選擇器的時候發現怎麼都沒有反應,於是仔細比對自己寫的和書上的代碼,把空格給加上了,結果就有反應了,當是當時不明白是怎麼回事,怎麼也想不通。在看了幾頁書便知道怎麼回事了,寫成博客分享一下。
示例代碼:
- <html>
- <head>
- <title>選擇器空格的問題</title>
- <script type="text/javascript" src="jquery.js"></script>
- <script type="text/javascript">
- $(document).ready(function()
- {
- alert("帶空格的選擇器的長度是:"+$(".test :hidden").length);
- alert("不帶空格的選擇器的長度是:"+$(".test:hidden").length);
- });
- </script>
- </head>
- <body>
- <div class="test">
- <div style="display:none;">我是內部div</div>
- <div style="display:none;">我是內部div</div>
- <div style="display:none;">我是內部div</div>
- <div class="test" style="display:none;">我是內部div</div>
- </div>
- <div class="test" style="display:none;">我是外部div</div>
- <div class="test" style="display:none;">我是外部div</div>
- </body>
- </html>
對於上邊的這兩行來說:
“alert("帶空格的選擇器的長度是:"+$(".test :hidden").length);”的彈出結果為4
“alert("不帶空格的選擇器的長度是:"+$(".test:hidden").length);”的彈出結果為3
對於過濾選擇器加上了空格的來說,它所獲取的是其子元素的過濾,所以上邊的例子是選取class為test的元素的子元素的隱藏元素。
而對於過濾選擇器沒有加上空格的來說,它所獲取的是其自身元素的過濾,所以上邊的例子選取隱藏的class為test的元素。
這兩個經常把人搞混,但是他們所表達的意思是不一樣的。