2012-11-09 28 views
0

我不是很明白爲什麼發現此行爲:奇怪的行爲有了jQuery.find()

var data = $("<html><title>hello</title><body><form><ul><li>here</li></ul></form></body><ul><li></li></ul></html>"); 
alert(data.find("form").length); 
alert(data.find("ul").length); 
  1. 它不會找到這樣的表格
  2. 它不會找到第二UL

我也提出了一個的jsfiddle公司招聘

http://jsfiddle.net/erick382/YP9kz/

回答

2

它找不到form元素,因爲它實際上是集合的根元素(它是body元素的直接子元素)。如果您將其更改爲.filter,它會發現form

alert(data.filter("form").length); // 1 

它不會找到第二個ul元素,因爲它是body元素,這是無效的外部(jQuery的提出第二ul中的根收集 - 使用filter,你也可以找到那一個)。

jQuery從集合中刪除html元素和body元素。如果你登錄了集合的內容它使它更清楚一點這是怎麼回事:

[<title>​hello​</title>​<form>​…​</form>​<ul>​…​</ul>​]

0

您需要添加eachul搜索。我還在演示中添加了James的答案。

JSFiddle Demo