Javascript jQuery选择器上下文没有';不匹配最外层元素
在下面的代码段中,为什么长度应为1,而长度为0Javascript jQuery选择器上下文没有';不匹配最外层元素,javascript,jquery,Javascript,Jquery,在下面的代码段中,为什么长度应为1,而长度为0 var jQueryObj=$(“测试””; //显示长度 $('body').html($('p',jQueryObj).length) 当您将上下文传递给jQuery时,它相当于使用该方法,该方法查看子元素。从: 在内部,选择器上下文是通过.find()方法实现的, 所以$('span',this)相当于$(this).find('span') 您的p元素不是后代,因此需要使用: filter方法将匹配的元素集减少为与选择器匹配的元素集(或通
var jQueryObj=$(“测试””;
//显示长度
$('body').html($('p',jQueryObj).length)代码>
当您将上下文传递给jQuery时,它相当于使用该方法,该方法查看子元素。从:
在内部,选择器上下文是通过.find()方法实现的,
所以$('span',this)相当于$(this).find('span')
您的p
元素不是后代,因此需要使用:
filter
方法将匹配的元素集减少为与选择器匹配的元素集(或通过函数定义的测试)。在您的情况下,匹配的元素集包含一个元素(p
),它将与选择器匹配。在您的jQueryObj
中根本没有
元素
使用jQueryObj
作为上下文将限制对所提供选择器的搜索。这与写作是一样的:
jQueryObj.find('p');
在内部,jquery在使用语法$(选择器,上下文)
时实际使用.find(),如文档中所述:
在内部,选择器上下文是通过.find()方法实现的,
所以$('span',this)相当于$(this).find('span')
进一步阅读:
当您提供上下文时,您告诉jQuery在该上下文中查找p
元素,因此您的选择器将查找作为上下文子元素的任何p
标记
如果将容器添加到上下文中,它将能够找到该元素
var jQueryObj=$(“测试””;
//显示长度
$('body').html($('p',jQueryObj).length)代码>
您正在原始
中搜索
(jQueryObj
已表示标记)
由于原始
元素中没有
元素,因此搜索不会返回任何结果
jQueryObj.find('p');