jQuery函数.text()的工作不正确

Dmi*_*try 4 javascript jquery

我试图通过使用没有任何标签从HTML获取所有文本$('.container').text().我没有获得明文,而是获得带有重复部分的文本.

这是我的HTML代码:

<div class="v highlighted" id="4">
    <span class="vn" id="4">4</span>
    <span class="p">Text-0</span><br>
    <span class="p">
        <span class="wj">
            Text-1
            <span class="w">Text-2</span>
            Text-3
        </span>
    </span><br>
</div>

<script>
    console.log($(".highlighted :not(.vn)").text());
</script>
Run Code Online (Sandbox Code Playgroud)

在控制台中我看到了这个结果:

Text-0Text-1Text-2Text-3Text-1Text-2Text-3Text-2
Run Code Online (Sandbox Code Playgroud)

有人知道它为什么会发生吗?

Que*_*tin 10

看看有什么.highlighted :not(.vn)比赛.

它匹配:

  • <span class="p">Text-0</span>
  • <br>
  • <span class="p"><span class="wj">Text-1<span class="w">Text-2</span>Text-3</span></span>
  • <span class="wj">Text-1<span class="w">Text-2</span>Text-3</span>
  • <span class="w">Text-2</span>
  • <br>

既然你已经包含在其中包含在另一个跨度和跨度一些文本既那些跨度匹配选择,你得到的外跨度的内容和内部跨度的(相同)的内容.

您可能希望在选择器中使用子组合子(>)而不是后代组合子().

.highlighted > :not(.vn)
Run Code Online (Sandbox Code Playgroud)