动态增加的标签事件不执行。

[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");
});