jQuery .each()迭代由HTML类-不一致的行为取决于顺序类定义

jQuery .each() iteration by HTML class - inconsistent behavior depending on order class is defined

本文关键字:取决于 定义 顺序 不一致 迭代 jQuery HTML each      更新时间:2023-09-26

我使用jQuery的$.each()方法迭代所有DOM元素,这些元素是某个类(例如class="definition")的成员,然后将每个元素的ID打印到控制台。然而,迭代似乎只对首先定义了指定类的元素起作用。因此,对于具有多个类的元素,如果指定的类没有在HTML中首先列出,它就会被"跳过"。

例如

:

HTML

<p class="definition" class="snippet" id="P1">Paragraph 1</p>
<p class="open" class="definition" class="snippet" id="P2">Paragraph 2</p>
<p class="snippet" class="definition" id="P3">Paragraph 3</p>
<p class="definition" class="snippet" id="P4">Paragraph 4</p>
<p class="definition" id="P5">Paragraph 5</p>
JavaScript

$( document ).ready(function() {
    $(".definition").each(function() {
        console.log(this.id);
    });
});

在上面的示例中,控制台记录P1、P4和P5的id,但不记录其他的id。

是否有一个原因,由类定义的类型顺序应该决定是否jQuery的$.each()识别类元素?

使用

<p class="definition snippet" id="P1">Paragraph 1</p>

当你第二次设置类属性时,它会重写第一个。
:

<p class="definition" class="snippet" id="P1">Paragraph 1</p>

相同
<p class="snippet" id="P1">Paragraph 1</p>

你也可以使用控制台检查真实的html代码