您的第一个选择器$('html head')
就像 find 一样工作 - 获取<head>
HTML 的任何后代
HTML──┐从这里开始找头
头
您的第二个选择器$('html').find('head')
获取 html 元素 - 然后找到所有后代<head>
元素
HTML──┐从这里开始找头
头
您的第三个选择器$('html').find('head').filter('html head')
获取 html 元素 - 然后找到所有后代<head>
元素 - 过滤器真的毫无意义,因为返回的元素head
保证是后代html
$('html').find('head')
HTML──┐从这里开始找头
头
你最后一个不工作$('html').find('html head')
的正在搜索下面的结构
HTML──┐从这里开始,找到“html head”
HTML──┐
头
但实际上你的结构是这样的
HTML──┐
头
哪个 html 没有后代 html 元素,因此返回 0 个元素
如果要将 HTML 元素保留在集合中,可以使用.addBack()
$('html') // get html element
.find('html head') // find head element
.addBack() // add back the html element
// if jQuery 1.7 and lower use .andSelf()
.length // this will result in 1 element - the HTML element