jQuery 中的计数
Numeration in jQuery
我想在 jQuery 中实现计算。我当前的代码工作正常,但适用于每个 div(.menu-item),我需要分开。
我当前的代码:
$('.menu-item h3').each(function (i) {
++i;
$(this).find('span').text(i + '.');
});
当前效果:
.menu-item
1.
2.
3.
menu-item#2
4.
5.
6.
需要:
.menu-item
1.
2.
3.
menu-item#2
1.
2.
3.
HTML代码:
<div class="menu-item">
<table>
<tr>
<td>
<h3><span></span> Title</h3>
</td>
</tr>
</table>
</div>
您将要访问每个 menu-item
,然后遍历其中的每个 h3
。这样,.each()
函数中的 i
会为每个 menu-item
重置:
$('.menu-item').each(function () {
$(this).find("h3").each(function(i) {
$(this).find('span').text(++i + '.');
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="menu-item">
<h3>
<span></span>
</h3>
<h3>
<span></span>
</h3>
<h3>
<span></span>
</h3>
</div>
<div class="menu-item">
<h3>
<span></span>
</h3>
<h3>
<span></span>
</h3>
<h3>
<span></span>
</h3>
</div>
你应该 "scope" i
在每个 .menu-item
里面。
试试:
$('.menu-item').each(function(index, $item){
$item.find('h3').each(function(index, $h3) {
$h3.find('span').text(++i + '.');
});
});
您可以使用 jQuery 的 .index()
函数来执行此操作,因为默认情况下 .index()
仅查看兄弟元素:
$('.menu-item h3').each(function () {
$(this).find('span').text($(this).index()+1);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="menu-item">
<h3>
<span></span>
</h3>
<h3>
<span></span>
</h3>
<h3>
<span></span>
</h3>
</div>
<div class="menu-item">
<h3>
<span></span>
</h3>
<h3>
<span></span>
</h3>
<h3>
<span></span>
</h3>
</div>
看到你的 HTML 后,你可以使用 $('.menu-item tr')
而不是 $('.menu-item h3')
。
我想在 jQuery 中实现计算。我当前的代码工作正常,但适用于每个 div(.menu-item),我需要分开。
我当前的代码:
$('.menu-item h3').each(function (i) {
++i;
$(this).find('span').text(i + '.');
});
当前效果:
.menu-item
1.
2.
3.
menu-item#2
4.
5.
6.
需要:
.menu-item
1.
2.
3.
menu-item#2
1.
2.
3.
HTML代码:
<div class="menu-item">
<table>
<tr>
<td>
<h3><span></span> Title</h3>
</td>
</tr>
</table>
</div>
您将要访问每个 menu-item
,然后遍历其中的每个 h3
。这样,.each()
函数中的 i
会为每个 menu-item
重置:
$('.menu-item').each(function () {
$(this).find("h3").each(function(i) {
$(this).find('span').text(++i + '.');
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="menu-item">
<h3>
<span></span>
</h3>
<h3>
<span></span>
</h3>
<h3>
<span></span>
</h3>
</div>
<div class="menu-item">
<h3>
<span></span>
</h3>
<h3>
<span></span>
</h3>
<h3>
<span></span>
</h3>
</div>
你应该 "scope" i
在每个 .menu-item
里面。
试试:
$('.menu-item').each(function(index, $item){
$item.find('h3').each(function(index, $h3) {
$h3.find('span').text(++i + '.');
});
});
您可以使用 jQuery 的 .index()
函数来执行此操作,因为默认情况下 .index()
仅查看兄弟元素:
$('.menu-item h3').each(function () {
$(this).find('span').text($(this).index()+1);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="menu-item">
<h3>
<span></span>
</h3>
<h3>
<span></span>
</h3>
<h3>
<span></span>
</h3>
</div>
<div class="menu-item">
<h3>
<span></span>
</h3>
<h3>
<span></span>
</h3>
<h3>
<span></span>
</h3>
</div>
看到你的 HTML 后,你可以使用 $('.menu-item tr')
而不是 $('.menu-item h3')
。