$('x> y'),$('y','x')和$('x y')之间有什么区别?
问题描述:
下面的三个jQuery选择器都有相同的结果。有什么不同?
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<p><span>Hello</span>, how are you?</p>
<p>Me? I'm <span>good</span>.</p>
<script>
$('p > span').css('color','red');
OR
$('span', 'p').css('color','red');
OR
$('p span').css('color','red');
</script>
</body>
</html>
答
$('span', 'p')
和$('p span')
是相同的,两者都将选择任何p元素的后代不管深度任何跨度元件。
$('p > span')
另一方面将选择p元素的直接子元素的跨度元素。因此,例如,这个选择将不在下面的例子中选择span元素:
<p>
<a href="#">
<span>Test</span>
</a>
</p>
..whereas其他两个会选择它就好了。
答
区别在于p > span
只有在跨度是段落的直接后缀时才匹配。
鉴于这种标记:
<p><div><span>Hello</span>, how are you?</div></p>
<p>Me? I'm <span>good</span>.</p>
选择p > span
只会在第二段匹配的跨度。
没有,第二个是不是一个多重选择器,它的两个选择,其中第二个用作第一个上下文。一个多重选择器可能是'$('span,p')',这当然不会给出与其他结果相同的结果。 – Guffa 2011-06-08 07:51:29