jquery动态生成的锚可以添加onclick事件吗?

TerrorM 2013-06-23 10:58:13
最近在练习jquery,想做一个各异动态添加输入框的表单,关键代码如下:
<script type="text/javascript">
var count = 2;
$(document).ready(function() {
$("#first").show();
$("button").click(function() {
var div = "<div> <b>用户名 " + count++
+ ": </b><input type='text' name='uname' placeholder='请输入您的用户名' required />"
+ " <img src='img/del.gif'/><a href='javascript:void(0)'>删除</a></div>";
$("#f").append(div);
$("div:last").slideDown();
});

$("a").click(function() {
alert(count);
$(this).parent().remove();
});
});
</script>

页面的元素代码:
<form id="f" method="get" action="user">
<input type="hidden" name="task" value="add" />

<button>添加</button><br/>
<input type="submit" value="提交" />
<div id="first">
<b> 用户名 1: </b><input type="text" name="uname" placeholder="请输入您的用户名" required />
<img src='img/del.gif'/><a href='javascript:void(0)'>删除</a>
</div>
</form>

现在的情况是:
div可以无限添加,但是只有第一个可以删除,之后的div点击链接都没用,alert()也没反应。
这是啥情况?是jquery生成的元素不可以添加点击事件吗?实在想不通,恳请诸位大神给小弟指条明路。谢谢了!
...全文
205 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
天际的海浪 2013-06-24
  • 打赏
  • 举报
回复
是因为你根本给新生成的元素添加事件,在执行$("a").click()的时候页面上只有一个a元素,就只给这一个a元素元素添加事件了 你这个情况最好是使用委派事件的方式绑定事件处理程序

	$("#f").on("click","a",function() {
		$(this).parent().remove();
	});
TerrorM 2013-06-24
  • 打赏
  • 举报
回复
引用 1 楼 jslang 的回复:
是因为你根本给新生成的元素添加事件,在执行$("a").click()的时候页面上只有一个a元素,就只给这一个a元素元素添加事件了 你这个情况最好是使用委派事件的方式绑定事件处理程序

	$("#f").on("click","a",function() {
		$(this).parent().remove();
	});
原来是这样,太感谢你了! 只是我还有些疑问: 是不是用jquery生成的元素只能以这种事件委派的方式添加事件(我试了下,用js的onclick事件是行得通的)? 委派事件的方式和直接添加事件的方式($("a").click(...))有什么区别吗? 在你提供的代码里面,this是不是表示了表单里被选中的链接?

87,992

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧