[code="java"]
$(document).ready(function() {
$(".cmdModif").click(function(){
lcVal=$(this).parent().parent().children(".amount").children(".textCell").html();
//得到input元素的name属性值
lcName=$(this).parent().parent().children(".amount").children("input").attr("name");
// alert(lcName);
//拼接文本框元素
lcInput="<input type='text' class='textCell' value="+lcVal+" name='"+lcName+"'/>"
// alert(lcInput);
//把“数量”单元格替换 成文本框
$(this).parent().parent().children(".amount").html(lcInput);
lcHtmlSave="<a class='cmdSave' href='#'>保存</a>"
$(this).parent().html(lcHtmlSave));
}
)
// "保存"链接 click事件
$(".cmdSave").click(function(){
alert("save click");
}
)
});
[/code]
如上,我通过jQuery动态新增了一个标签: lcHtmlSave="保存"
这个标签是新增成功的,可是为什么通jquery不能执行这个标签的click事件代码呢?
// "保存"链接 click事件
$(".cmdSave").click(function(){
alert("save click");
}
)
jQuery是很强大的,即使实现没有这个元素,一样可以后来注册事件,建议查一下live绑定事件的API,修改的例子如下:
[code="java"]
$(document).ready(function() {
$(".cmdModif").click(function(){
$(this).parent().append("保存");
})
// "保存"链接 click事件
$(".cmdSave").live('click',function(){
alert('save click')
});
});
[/code]
.cmdSave对象开始不存在,但是使用live事件追加注册一下,就可以有事件了。
我是觉得,浏览器解析到
[code="java"]$(".cmdSave").click(function(){
alert("save click");
}
) [/code]
你的.cmSave还不存在,所以他无法帮你绑定了。
什么时候生成.cmdSave,什么时候给他绑定,就可以了。。你再想想
后续动态增加的元素都不能绑定? 请问那应如何做呢?
答:后续动态增加的时候你需要在增加时注册监听器。增加后如果没有注册时不行的。
直接用onclick
[code="html"]lcHtmlSave="保存"
[/code]
再写一个save方法
lcHtmlSave="保存" 是新增的,$(".cmdSave")获取的是初始化完成时页面中的元素。新增元素时,重新邦定下事件即可。
将
lcHtmlSave="保存"
$(this).parent().html(lcHtmlSave));
改为:
var $add = $("保存");
$(this).parent().empty().append($add);
$add.bind("click",function(){
alert("save click");
});