更优雅的解决方案:nth-​​child内容替换

1 javascript css jquery

我是jQuery的新手,我想知道是否有更优雅的解决方案:

$( "ul li:nth-child(1) a span" ).append( "01" );
$( "ul li:nth-child(2) a span" ).append( "02" );
$( "ul li:nth-child(3) a span" ).append( "03" );
$( "ul li:nth-child(4) a span" ).append( "04" );
$( "ul li:nth-child(5) a span" ).append( "05" );
$( "ul li:nth-child(6) a span" ).append( "06" );
$( "ul li:nth-child(7) a span" ).append( "07" );
$( "ul li:nth-child(8) a span" ).append( "08" );
$( "ul li:nth-child(9) a span" ).append( "09" );
$( "ul li:nth-child(10) a span" ).append( "10" );
Run Code Online (Sandbox Code Playgroud)

Dav*_*mas 6

如果要使用jQuery向DOM添加文本:

$( "ul li a span" ).append(function(i){
  return (i+1)<10 ? '0' + (i+1) : i+1;
});
Run Code Online (Sandbox Code Playgroud)

$("ul li a span").append(function(i) {
  return (i + 1) < 10 ? '0' + (i + 1) : i + 1;
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li><a href="#"><span>original span text </span></a>
  </li>
  <li><a href="#"><span>original span text </span></a>
  </li>
  <li><a href="#"><span>original span text </span></a>
  </li>
  <li><a href="#"><span>original span text </span></a>
  </li>
  <li><a href="#"><span>original span text </span></a>
  </li>
  <li><a href="#"><span>original span text </span></a>
  </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

或者,使用CSS,尽管DOM中不存在此文本,因此无法选择:

ul {
  counter-reset: spanCount;
}

ul li a span {
  counter-increment: spanCount;
}

ul li a span::after {
  content: counter(spanCount, decimal-leading-zero);
}
Run Code Online (Sandbox Code Playgroud)

ul {
  counter-reset: spanCount;
}
ul li a span {
  counter-increment: spanCount;
}
ul li a span::after {
  content: counter(spanCount, decimal-leading-zero);
}
Run Code Online (Sandbox Code Playgroud)
<ul>
  <li><a href="#"><span>original span text </span></a>
  </li>
  <li><a href="#"><span>original span text </span></a>
  </li>
  <li><a href="#"><span>original span text </span></a>
  </li>
  <li><a href="#"><span>original span text </span></a>
  </li>
  <li><a href="#"><span>original span text </span></a>
  </li>
  <li><a href="#"><span>original span text </span></a>
  </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

  • 你应该在`ul`或`body`或任何父元素重置`spanCount`.否则它将永远是'01` (2认同)