我想在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>
答案 0 :(得分:2)
你可以使用jQuery的.index()
函数来执行此操作,因为默认情况下.index()
仅查看兄弟元素:
$('.menu-item h3').each(function () {
$(this).find('span').text($(this).index()+1);
});
&#13;
<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>
&#13;
看到您的HTML后,您可以使用$('.menu-item tr')
代替$('.menu-item h3')
。
答案 1 :(得分:0)
您需要转到每个menu-item
,然后查看每个h3
。这样,i
函数中的.each()
会为您拥有的每个menu-item
重置:
$('.menu-item').each(function () {
$(this).find("h3").each(function(i) {
$(this).find('span').text(++i + '.');
});
});
&#13;
<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>
&#13;
答案 2 :(得分:0)
你应该&#34;范围&#34;每个i
内.menu-item
。
尝试:
$('.menu-item').each(function(index, $item){
$item.find('h3').each(function(index, $h3) {
$h3.find('span').text(++i + '.');
});
});