遍历元素并添加索引号
Iterating through elements and adding index number
为什么此代码在单击时会将class=hello5
添加到所有h2元素中?共有4个h2元素。
for (i=0; i < $('h2').length; i++) {
$('#' + i).click(function(index) {
$(this).addClass('hello' + i)
})
};
我希望它添加class=hello0
、class=hello1
等
HTML:
<h2 id="0">0</h2>
<h2 id="1">1</h2>
<h2 id="2">2</h2>
<h2 id="3">3</h2>
我必须添加另一个循环吗?我很困惑。谢谢
i
与递增的i
相同。当这些回调函数被触发时,i
的值将是8
,因此所有回调都将添加相同的类。
通常避免在循环中创建事件处理程序。一次选择这些元素并为所有元素添加一个事件处理程序要容易得多:
$('h2').click(function() {
$(this).addClass('hello' + this.id);
});
jsfiddle 上的演示
主要问题是您期望处理程序的参数作为索引,但事实并非如此,它是eventObject。
你最好使用这样的.each()函数:
$("h2").each(function(index, item){
$(item).click(function(e){
e.preventDefault();
$(this).addClass("hello" + index);
})
})
我编辑了你的html片段:
<h2 id="id0">0</h2>
<h2 id="id1">1</h2>
<h2 id="id2">2</h2>
<h2 id="id3">3</h2>
试试这个代码:
$('h2[id^="id"]').click(function(index){
var idx = $(this).index();
$(this).addClass('hello' + idx)
});
Fiddle here
http://jsfiddle.net/Jbh3q/203/
$("h2").each(function(index,element){
$(element).addClass("hello" + index);
})
因为当时点击事件是火灾。变量i
是结束循环,它得到值4。解决方案是使用必须获取h2
元素的索引并分配给类。我有一点变化:
$().ready(function () {
for (i = 0; i < $('h2').length; i++) {
$('#' + i).click(function (index) {
$(this).addClass('hello' +$("h2").index( $(this)))
})
};
})
jsfiddle 上的演示
相关文章:
- 添加到角度过滤器中的索引
- 在使用 javascript 动态添加行时,我正在增加索引值,但出现错误
- 将索引列添加到数据表
- 如何在遍历表和添加新元素时获得tr的索引
- 如果在数组中发现重复,则必须通过纯javascript添加带关键字的索引
- 将事件添加到涉及for()的索引中的多个子节点
- 将 z 索引添加到窗口
- 如何在ng-options中添加两个索引,并使用Angular.js动态设置值
- jQuery将相同的类添加到两个不同容器中的同一元素索引中
- 如何在鼠标悬停事件时添加索引
- 删除和添加嵌套对象中同一索引处的对象
- lunr.js添加有关索引记录的数据
- 数组推送函数在数组中再添加一个空索引
- 在 javascript 的每个数组元素中添加索引
- 如何在索引数据库中仅添加一次初始数据
- 如何使用angularjs将数据添加到json数组的特定索引
- 如何在json对象的每个索引中添加双引号
- 在数组中添加和减去数字索引值的类型转换
- 将z索引添加到FullCalendar中的周行
- JSON索引添加到自身,而不是在重新加载时从0开始