今天一個同事諮詢我關於jQuery的filter進行過濾的問題.他查看了jQuery1.7 made by UNREGISERED version of Easy CHM的文檔資料.發現裏面過於filter的說明沒法正常運行成功.後來發現次文檔的一些內容有一些bug會誤導學習者.同時經過此次filter的研究發現了HTML p元素的問題.以前竟然一直沒有注意.html
先給你們看看jQuery1.7 made by UNREGISERED version of Easy CHM中的說明學習
保留子元素中不含有ol的元素。this
<p><ol><li>Hello</li></ol></p><p>How are you?</p>
$("p").filter(function(index) { return $("ol", this).length == 0;//這裏明顯有錯誤的.這樣也不可能成功的. });
[ <p>How are you?</p> ]
其實這個是沒法成功運行的.錯誤就在$("ol", this).length == 0;我開始覺得修改成(this).has("ol").length==0就OK了,後來引起了新的問題.就是p元素包裹其餘元素的問題.spa
咱們能夠看看這樣的代碼(讓整個HTML裏面只有此這些代碼內容): code
<p><div>I'm nest in p element.</div></p>
而後用jQuery去取此HTML裏面的p元素.htm
alert($("p").length);
由於只有一個p.咱們都應該期待獲得返回結果爲1.可是你能夠試驗.Chrome.Firefox.Opera.Safari.IE.通通返回2.
Why?element
應該不少比我細心並且不像我這樣馬虎的人都知道緣由.那我就本身記下來警示一下本身.這種問題對我這種粗心的人是很是容易犯錯的.原來P元素是不能包含塊級元素(包括P自身)的.The P element represents a paragraph. It cannot contain block-level elements (including P itself). 文檔