Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 这两个选择器之间有什么区别?_Javascript_Jquery_Css - Fatal编程技术网

Javascript 这两个选择器之间有什么区别?

Javascript 这两个选择器之间有什么区别?,javascript,jquery,css,Javascript,Jquery,Css,在网页中,有多个div元素,其中一些元素的类为“class1” 问题:下面两个选择器是否都会为我们提供类为class1的所有div元素 $("div .class1") $("div.class1") 第一个将选择一个元素,该元素具有类class1,该类是div的后代 <div> <p class="class1">text</p> <-- selected </div> 下面的两个选择器会给我们所有具有类的div元素吗 一班的

在网页中,有多个div元素,其中一些元素的类为“class1”

问题:下面两个选择器是否都会为我们提供类为class1的所有div元素

$("div .class1")

$("div.class1")

第一个将选择一个元素,该元素具有类
class1
,该类是
div
的后代

<div>
    <p class="class1">text</p> <-- selected
</div>
下面的两个选择器会给我们所有具有类的div元素吗 一班的学生

$("div .class1")

$("div.class1")

不,只有第二个选项,
$(“div.class1”)
将被删除。在jQuery和CSS中,类前面的空格表示您正在查找该类的后代元素。

第一个选择器为您提供所有
.class1
元素,这些元素是任何
元素的后代


第二个将为您提供所有
.class1
元素,这些元素实际上是
本身。

这两个选择器做的事情非常不同

此选择器:

$("div .class1")
$("div.class1")
将返回类为
class1
且是
div
的后代(直接或其他)的任何元素(不考虑元素类型)(不考虑该
div
的类,如果有)

此选择器:

$("div .class1")
$("div.class1")
将返回类为
class1

Nop的任何
div

<div class="class1">  <-- selected
    <p>text</p>
</div>

第一个将为您提供
div
中的元素,这些元素具有类
class1
,第二个将为您提供类为“class1”的div。

您发布的to选择器之间的区别是元素层次结构

假设您有这样一个代码:

<div class="class1">
    This is a div with class name class1
</div>
<div>
    This is a div with no class name</div>
    <span class="class1">This is a span with class name class1</span>
<div class="class1">
    This is a div with class name class1
</div>
<div>
    This is a div with no class name
    <p class="class1">This is a paragraph with class name class1</p>
</div>
<div class="class1">
    This is a div with class name class1
</div>
<div class="class1">
    This is a div with class name class1
    <div class="class1">
        This is a div with class name class1
    </div>
 </div>

这是一个类名为class1的div
这是一个没有类名的div
这是一个类名为class1的跨度
这是一个类名为class1的div
这是一个没有类名的div

这是一个类名为class1的段落

这是一个类名为class1的div 这是一个类名为class1的div 这是一个类名为class1的div
选择器
$(“div.class1”)
将返回类名为
class1
元素中的所有元素。在我们的示例中,这将是
..

..

和最后一个div
..

而选择器$(“div.class1”)将返回类名为
class1
的所有元素。在我们的示例中,这将是
的所有实例

这里有一把小提琴可以帮助你了解更多:


希望这有帮助。

这与css的关系比与jquery的关系更大。我肯定有人问过同样的问题,我只是找不到它来讨论选择器语法。@Huangism,我试着在这里和谷歌上找到它,但没有得到完整的答案。从技术上讲,如果所有
.class1
元素都是至少一个div元素的后代,两者都会。否则,只有第二个选择器。@LcSalazar否第一个选择器将给出任何
.class1
不满足OP的questionBy后代的元素,如果父div的callas为'class1',它是否也包括父div?@Sunil:A“parent”不是后代,是吗?如果您有一个
div
,它有一个子
div
,后者的类为
class1
,那么子
div
将由第一个选择器返回。(事实上,两者都会返回。)