我试图在我的按钮上绑定警报:
for(var i=1; i<=3; i++){
$('#' + i).live('click', function(){
alert(i);
});
};
这是我的HTML代码:
<input id="1" type="button" value="one">
<input id="2" type="button" value="two">
<input id="3" type="button" value="three">
但我在所有按钮上都有4个。如何修复它以获得正确的警报值? (1,2,3等等)
答案 0 :(得分:2)
for (var i = 1; i <= 3; i++) {
$('#' + i).live('click', function(i) {
return function() {
alert(i);
};
}(i));
}
请注意,您使用.live
错误,关键是不要单独绑定每个元素,而是找出每个元素的共同点并使用该选择器:
$("input[type=button]").live(function() {
alert(this.id);
});
答案 1 :(得分:1)
使用this.id,因为当循环结束时,我将有最后一个打破循环的值。
<强> Live Demo 强>
for(var i=1; i<=3; i++){
$('#' + i).live('click', function(){
alert(this.id);
});
};
最好为所有按钮提供一些公共类,并使用该类来绑定事件。
<input id="1" type="button" value="one" class="someclass">
<input id="2" type="button" value="two" class="someclass">
<input id="3" type="button" value="three" class="someclass">
$('.someclass').live('click', function(){
alert(this.id);
});
不推荐使用live,最好使用on
$('.someclass').on('click', function(){
alert(this.id);
});
答案 2 :(得分:1)
for(var i=1; i<=3; i++){
$('#' + i).live('click', function(){
alert(this.id);
});
}
答案 3 :(得分:0)
有很多东西(虽然不是错误的本身)不是很好的做法。
id
不应以数字.live()
已弃用,应避免使用。应该使用.on()
.live()
或.on()
不应该像循环中的那样绑定。它们应该尽可能使用单个选择器一次完成。class
会更好。尝试
$('input[type=button]').on('click', function(){
alert( this.id );
})