var li = "<li>" + "<a>" + // 缩略图 点击部分 index='" + i + "' "<span class='CameraImg' type='play' index='" + i + "'>" + "<img src='/HiHomeBabyMS/Public/img/img.jpg' />" + "<span class='CameraPlay'></span>" + "</span>" + // video信息部分, 修改名称 删除 "<span class='CameraInfo VideoName' type='edit' video_id='" + video['video_id'] + "'>" + video['name'] + "</span>" + "<span class='CameraInfo' type='delete'>" + "<i class='IconView'></i>" + record + "<i class='DeleteVideo' id='delete_" + i + "' index='" + i + "'></i>" + "</span>" + "</a>" + "</li>"; $("#CameraUl").append(li);
如上,动态添加html元素后,响应事件的添加方法:
$("#InnerMainId #CameraUl").unbind('click').on('click', 'li>a>span', function() { var type = $(this).attr('type'); if (type == "play") { var index = $(this).attr('index'); // TODO } else if (type == "edit") {// 修改 // TODO } else {// 删除 // TODO } event.stopImmediatePropagation(); });
这样可以为li中的各个元素添加不同的属性。而如下的分各个元素的添加点击事件的做法,会发生覆盖,即只能响应最后一个事件:
$(document).unbind('click').on('click', '.CameraImg', function(event) { // TODO });
$(document).unbind('click').on('click', '.VideoName', function(event) { // TODO });
$(document).unbind('click').on('click', '.DeleteVideo', function(event) { // TODO });
即只有类名为DeleteVideo的元素的点击事件 可以响应。