如何选择第一个孩子?

IT技术 javascript jquery children
2021-02-23 09:05:59

如何id=div1使用第一个子选择器选择这些 div 中的第一个 div(带有 的那个)?

<div class="alldivs">
   <div class="onediv" id="div1"> 1 This one </div>
   <div class="onediv" id="div2"> 2 </div>
   <div class="onediv" id="div3"> 3 </div>
</div>
5个回答

在纯JavaScript 中,您将使用以下内容:

// Single
document.querySelector(".onediv").classList.add("red"); 

// Multiple (deeply nested)
document.querySelectorAll(".onediv:first-child").forEach(EL => EL.classList.add("red"));

或者通过使用Element.firstElementChild的父元素

// Single Parent 
document.querySelector(".alldivs").firstElementChild.classList.add("red");

// Multiple parents
document.querySelector(".alldivs").forEach(EL => EL.firstElementChild.classList.add("red"));

jQuery 获取第一个孩子

利用: $(".onediv").eq(0)

针对 a 中一个选择器方法的其他示例 LIUL

句法 类型 例子
.eq() 方法 $("li").eq(0)
。第一的() 方法 $("li").first()
:eq() 选择器 $("li:eq(0)")
:第一的 选择器 $("li:first")
:第一个孩子 选择器 $("li:first-child")
:lt() 选择器 $("li:lt(1)")
:nth-child() 选择器 $("li:nth-child(1)")
。片() 方法 $("li").slice(0,1)

它们在深度方面的运作方式略有不同。使用以下演示示例:

$("select").on("change", function() {
  $("li").removeClass("red");
  new Function(`return (${this.value})`)();
}).trigger("change");
.red {color: red;}
option[disabled] {font-size: 1.4em; color: blue;}
<select>
  <option disabled>jQuery examples:</option>

  <option>$("li").eq(0).addClass("red")</option>
  <option>$("li:eq(0)").addClass("red")</option>
  <option>$("li").first().addClass("red")</option>
  <option>$("li:first").addClass("red")</option>
  <option>$("li:first-child").addClass("red")</option>
  <option>$("li:lt(1)").addClass("red")</option>
  <option>$("li:nth-child(1)").addClass("red")</option>
  <option>$("li").slice(0,1).addClass("red")</option>

  <option disabled>JavaScript examples:</option>

  <option>document.querySelector("li").classList.add("red")</option>
  <option>document.querySelectorAll("li:first-child").forEach(EL => EL.classList.add("red"))</option>

  <option disabled>Mixed jQuery + JavaScript</option>

  <option>$("li")[0].classList.add("red")</option>
</select>

<ul>
  <li>1</li>
  <li>2
    <ul>
      <li>2.1</li>
      <li>2.2</li>
    </ul>
  </li>
  <li>3</li>
</ul>

<script src="https://code.jquery.com/jquery-3.6.0.js"></script>

您还可以使用从 jQuery 元素集合中[i]通过索引获取 JS 元素,例如:

$("li")[0]

但是现在你有了原生的 JSElement表示,你必须使用 JavaScript 方法,例如:

$("li")[0].classList.add("active"); // Adds class "active" to the first LI in the DOM

或者你可以不要 - 这是糟糕的设计)将它包装回一个 jQuery 对象

$( $("li")[0] ).addClass("active"); // Don't! Use .eq() instead
$('div.alldivs :first-child');

或者你可以直接引用id:

$('#div1');

根据建议,您可能最好使用子选择器:

$('div.alldivs > div:first-child')

如果您不必使用first-child,您也可以:first按照建议使用,或者 $('div.alldivs').children(0).

你的第一个空间需要一个空间。否则它只会匹配div.alldivs第一个孩子的实例(如果有的话)
2021-05-01 09:05:59
$('div.alldivs > div:first-child');
2021-05-02 09:05:59
@kennis:那行不通。这将匹配任何恰好是第一个孩子的 div。您确实想要div:first-of-type,但 jQuery 显然不支持。(应该早点看到那个,但在问题中错过了。)
2021-05-02 09:05:59
这将返回任何后代的每个第一个孩子,而不仅仅是这里的第一个 div。
2021-05-14 09:05:59

使用:first-child选择器。

在你的例子中...

$('div.alldivs div:first-child')

这也将匹配符合选择标准的任何第一个子后代。

虽然:first只匹配一个元素,但:first-child选择器可以匹配多个元素:每个父元素一个。这相当于:nth-child(1).

对于第一个匹配的only,使用:first选择器。

或者,Felix Kling建议使用直接后代选择器只获取直接子代......

$('div.alldivs > div:first-child')
在这里使用子选择器可能会更好>或者也许只是:$('div.alldivs').children().first();或类似的东西。
2021-04-21 09:05:59

嗨,我们可以在 jQuery 中使用默认方法“first”

这里有一些例子:

当您想为第一个 div 添加类时

  $('.alldivs div').first().addClass('active');

当您想更改删除“onediv”类并仅添加到第一个孩子时

   $('.alldivs div').removeClass('onediv').first().addClass('onediv');

正如@Roko 提到的,您可以通过多种方式做到这一点。

1.使用jQuery首子选择器——SnoopCode

   $(document).ready(function(){
    $(".alldivs onediv:first-child").css("background-color","yellow");
        }
  1. 使用jQuery eq Selector - SnoopCode

     $( "body" ).find( "onediv" ).eq(1).addClass( "red" );
    
  2. 使用jQuery Id 选择器 - SnoopCode

       $(document).ready(function(){
         $("#div1").css("background-color: red;");
       });