jQuery动态添加html元素后,响应事件的问题记录

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的元素的点击事件 可以响应。

时间: 2024-08-01 16:28:40

jQuery动态添加html元素后,响应事件的问题记录的相关文章

jquery学习记录一:jquery动态添加html元素后设置其绑定事件

1. jquery动态添加html元素(例如:) <div id="testdiv"> <ul></ul> </div> 假设我们要给ul动态添加的<li>绑定click事件形成如下结果 <div id="devices_div"> <ul> <li name="apple">apple</li> <li name="pea

jquery动态添加的元素绑定的事件不生效的问题

我们可以通过 $(document).on('click', '#xxx', callback) 这种形式解决. 原因,一般情况下,我们是通过 $('#xxx').click(callback) 这种形式去绑定,这种绑定之所以生效是因为,我们程序加载 $(function(){}) 的时候绑定了回调,而动态添加上去的,我们并没有去绑定. 所以动态添加的元素,点击的时候并不会触发我们想要的效果.但是实际上,在我们点击的时候,还是产生了点击事件,只是这个事件没有被我们的预期回调处理,因为我们的回调没

给Jquery动态添加的元素添加事件

给Jquery动态添加的元素添加事件 我想很多人都会向我一样曾经 被新元素的事件绑定困惑很久也就是在页面加载完成后给元素绑定了事件,但又新增加的元素上却没有绑定任何事件. js的事件监听跟css不一样,css只要设定好了样式,不论是原来就有的还是新添加的,都有一样的表现.而事件监听不是,你必须给每一个元素单独绑定事件. 常见的例子是处理表格的时候.每行行末有个删除按钮,点了这个能够删除这一行. <table>    <tbody>        <tr>        

[转载]给Jquery动态添加的元素添加事件

原文地址:给Jquery动态添加的元素添加事件作者:小飞侠 我想很多人都会向我一样曾经 被新元素的事件绑定困惑很久也就是在页面加载完成后给元素绑定了事件,但又新增加的元素上却没有绑定任何事件. js的事件监听跟css不一样,css只要设定好了样式,不论是原来就有的还是新添加的,都有一样的表现.而事件监听不是,你必须给每一个元素单独绑定事件. 常见的例子是处理表格的时候.每行行末有个删除按钮,点了这个能够删除这一行. <table> <tbody> <tr> <td

Jquery 动态添加删除元素 用js添加的元素无法删除问题

用jquery方法的绑定侦听和销毁来解决动态div的增加删除: 正确代码: <script type="text/javascript" > $(document).ready(function(){  bindListener(); }) function addimg(){  $("#mdiv").append('<div ><input type="file" name="img[]" /&

jQuery动态添加的元素绑定事件处理函数代码

jQuery动态添加的元素绑定事件处理函数代码 作者: 字体:[增加 减小] 类型:转载 有一段时间没用jquery了,今天又碰到这个问题.当时是知道有livejquery可以解决.但是我并不喜欢为了这个而另外加载一个. 我当时的处理方法是在添加的时候手工绑定事件处理函数.不过新版的jquery已经添加了这个功能.我们已经不需要为此烦恼了. 参考:http://api.jquery.com/live/ 以前我们定义事件,比如为元素定义单击事件是这样写的: 复制代码 代码如下: $('input'

给Jquery动态添加的元素添加事件2

jquery为动态添加元素添加事件 还有这里:http://www.cnblogs.com/dumuqiao/archive/2011/09/09/2172511.html Event names and namespaces(事件名称和命名空间) http://www.css88.com/jqapi-1.9/on/ 任何事件的名称,可以作为events 参数.jQuery将通过所有浏览器的标准JavaScript事件类型,当用户操作事件,如click,浏览器会调用handler参数的函数.此外

用on给动态添加的元素绑定hover事件,没有生效的解决

1.需求:经常要动态加载dom节点,加载之后的节点当然也会有一些绑定事件的需求,今天给一个事件绑定hover,用jQuery,竟然没有生效.先上没有生效的代码 $('ul.course_lists').on('hover','li',function(){ // mouseenter dosomething },function(){ // mouseleave dosomething }); 2.问题出在哪里了? on函数传的参数不对?查查文档呗,我看或不看他,他都在那里,我看他,或许可以帮助

jQuery对 动态添加 的元素 绑定事件(on()的用法)

从jQuery 版本 1.7 起,on() 方法是向被选元素添加事件处理程序的(官方推荐)首选方法. 当浏览器下载完一个页面的时候就开始渲染(翻译)HTML标签,然后执行css.js代码,在执行js代码的时候就注册了相应绑定的事件,我们平常用jQuery给HTML标签绑定(单击)事件是一般这样写 $("#btnId").click(function () { //触发事件后 逻辑 });  但是对用js动态添加的元素 是无效的,即没有绑定单击事件,所以对于动态添加的标签需要用on()来