Jquery中click事件重复执行的问题

Jquery版本1.11.0
问题:点击修改链接,在弹出的对话框中,点提交按钮,click事件会执行多次。而用原生js则没有问题。
并且提交后,第二次提交后,多个数据都变成一个了。
代码如下:
点击了多少次修改,点提交时就会alert出多少个222222http://jsfiddle.net/D7eEd/
出问题部分用原生js实现:http://jsfiddle.net/vowmmm/n5yzy/
个人认为原因是:
click事件里不能包含click事件?不知道是不是这样。
为方便查看,附带整个文档
Document
*{margin:0;padding:0;}
#table{border:1pxsolidgray;border-collapse:collapse;width:500px;}
tr{height:30px;}
th{border:1pxsolidgray;}
td{border:1pxsolidgray;text-align:center;}
tda{margin-right:5px;color:blue;text-decoration:none;}
#popDiv,#editDiv{border:1pxsolidsilver;width:315px;padding:1px;margin-top:10px;position:absolute;left:38%;z-index:4;display:none;}
.popp{height:30px;margin-top:20px;clear:both;}
.popa{display:block;float:right;text-decoration:none;font-size:12px;}
.pop.input{height:20px;line-height:20px;}
/*#bottom{width:100%;height:30px;margin:0auto;}*/
#sub{display:block;height:30px;margin:0auto;}
.mask{background-color:#000;position:absolute;left:0;top:0;z-index:2;}
姓名
年龄
职位
工资
操作
张三
23
PHP
79999
修改
李四
21
Java
12000
修改
王五
34
Python
29999
修改
赵六
37
Javascript
65450
修改
close

姓名:

年龄:

职位:

工资:

//点击'修改'链接
$('a.edit').click(function(){
vararr=[];
$(this).parent().siblings().each(function(){
arr.push($(this).text());
});
$('#editDiv').show().find('p').each(function(i){
$(this).find('input:text').val(arr[i]);
});
varaTr=$(this);
$('#sub').click(function(){
alert('2222222');
vardata=[];
$(this).prevUntil('a.close').each(function(){
data.push($(this).find('input:text').val());
});
data.reverse();
aTr.parent().siblings().each(function(i){
$(this).text(data[i]);
});
$(this).parent().hide();
$('div.mask').remove();
});
//原生JS实现点击,没有问题
/*document.getElementById('sub').onclick=function(){
alert('1111111');
vardata=[];
$(this).prevUntil('a.close').each(function(){
data.push($(this).find('input:text').val());
});
data.reverse();
aTr.parent().siblings().each(function(i){
$(this).text(data[i]);
});
$(this).parent().hide();
$('div.mask').remove();
};*/
//添加遮罩层
varmaskHeight=$(document).height();
varmaskWidth=$(document).width();
$('
').appendTo($('body'));
$('div.mask').css({
'width':maskWidth,
'height':maskHeight,
'opacity':0.4
});
});
$('a.close').click(function(){
$(this).parent().hide();
$('div.mask').remove();
});
一只萌萌小番薯
浏览 507回答 2
2回答

慕运维8079593

已经找到原因了,我提供个方法吧:$('#sub').unbind('click').click(function(){...});每次绑定前先取消上次的绑定。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript