jQuery实现为动态添加的元素绑定事件实例分析


Posted in jQuery onSeptember 07, 2018

本文实例讲述了jQuery实现为动态添加的元素绑定事件。分享给大家供大家参考,具体如下:

在使用jquery的方式为元素绑定事件时,我经常使用bind或者click,但这只能为页面已经加载好的元素绑定事件。像需要用ajax的方式请求远程数据来动态添加页面元素时,显然以上几种绑定事件的方式是无效的,具体写法如下。

$(selector).bind(event,data,function)
$(selector).click(function)
$("#searchMoveVideoResult ul li").bind("click",function(){
  $(this).css("border","5px solid #000");
});
$("#searchMoveVideoResult ul li").click(function(){
  $(this).css("border","5px solid #000");
});

为动态添加的元素绑定事件有以下几种方式:

1. delegate():向匹配元素的当前或未来的子元素附加一个或多个事件处理器

$(selector).delegate(childSelector,event,data,function)

目前大多数jquery版本都可用,不过我一般不用它。

$("#searchMoveVideoResult").delegate("ul li","click",function(){
  $(this).css("border","5px solid #000");
});
$("#searchMoveVideoResult").delegate("click","ul li",function(){
  $(this).css("border","5px solid #000");
});

看出它们的不同了吗,第二种写法是错误的,记住一定要把事件写在元素的后面。

2. live():为当前或未来的匹配元素添加一个或多个事件处理器

$(selector).live(event,data,function)

jquery1.8版本以前推荐使用该方法;jquery1.8版本之后就不建议使用了,我试了下,也是无效的,所以高版本的jquery推荐使用on()方法绑定事件。

$("#searchMoveVideoResult ul li").live("click",function(){
   $(this).css("border","5px solid #000");
});

3. on():适用于当前及未来的元素(比如由脚本创建的新元素)

$(selector).on(event,childSelector,data,function,map)

试验了下,大多数版本的jquery都是支持这个方法的,也是我比较喜欢使用的方法。

$("#searchMoveVideoResult").on("click","ul li",function(){
  $(this).css("border","5px solid #000");
});
//下面这样写就是错的了,一定要把动态添加的元素放到on()方法里面才行。
$("#searchMoveVideoResult ul li").on("click",function(){
  $(this).css("border","5px solid #000");
});

4.onclick事件:动态添加数据时,就为元素绑定onclick事件

function searchMoveVideo(){
  $.ajax({
    type:"POST",
    url:"http://op.juhe.cn/onebox/movie/video",
    data:{"q":$("#moveVideo").val(),"key":"346f79df993776748b242236464d565d"},
    dataType:"JSONP",
    success:function(data){
      console.log(data);
      if(data.error_code=="0"){
        var result=data.result;
        console.log(result);
        var html=result.title+"<br>"+result.tag+"<br>"+result.act+"<br>"+result.year+"<br>"                     +result.area+"<br>"+result.dir+"<br>"+result.desc;
        html+="<br><img src='"+result.cover+"'/><br>";
        html+='<ul style="list-style: none; float: left;">';
        var act_s=result.act_s;
        for(var i=0;i<act_s.length;i++){
          html+='<li style="float: left;" <span style="color:#cc0000;">onclick="showSource(this);"</span>><a target="_bla                        nk"><img src="'+act_s[i].image+'"><br>'+act_s[i].name+'</a></li>';
        }
        html+='</ul>'
        $("#searchMoveVideoResult").html(html);
      }else{
        $("#searchMoveVideoResult").html(data.reason);
      }
    }
  });
}

希望本文所述对大家jQuery程序设计有所帮助。

jQuery 相关文章推荐
jQuery获取单选按钮radio选中值与去除所有radio选中状态的方法
May 20 jQuery
jQuery实现一个简单的验证码功能
Jun 26 jQuery
jQuery事件对象的属性和方法详解
Sep 09 jQuery
jQuery中 DOM节点操作方法大全
Oct 12 jQuery
jquery ajaxfileupload异步上传插件
Nov 21 jQuery
jQuery实现的页面详情展开收起功能示例
Jun 11 jQuery
jquery实现搜索框功能实例详解
Jul 23 jQuery
jQuery实现动画、消失、显现、渐出、渐入效果示例
Sep 06 jQuery
jQuery实现为动态添加的元素绑定事件实例分析
Sep 07 jQuery
jQuery实现表格的增、删、改操作示例
Jan 27 jQuery
jQuery子选择器与可见性选择器实例分析
Jun 28 jQuery
Jquery Fade用法详解
Nov 06 jQuery
jQuery插件实现的日历功能示例【附源码下载】
Sep 07 #jQuery
jQuery中each遍历的三种方法实例分析
Sep 07 #jQuery
jQuery超简单遮罩层实现方法示例
Sep 06 #jQuery
jQuery实现鼠标移入移出事件切换功能示例
Sep 06 #jQuery
jQuery实现动画、消失、显现、渐出、渐入效果示例
Sep 06 #jQuery
jQuery实现基本动画效果的方法详解
Sep 06 #jQuery
jQuery滑动效果实现方法分析
Sep 05 #jQuery
You might like
PHP中的日期处理方法集锦
2007/01/02 PHP
解析ajax事件的调用顺序
2013/06/17 PHP
php实现文件下载代码分享
2014/08/19 PHP
PHP使用feof()函数读文件的方法
2014/11/07 PHP
php给图片加文字水印
2015/07/31 PHP
在php7中MongoDB实现模糊查询的方法详解
2017/05/03 PHP
javascript中的变量是传值还是传址的?
2010/04/19 Javascript
jQuery boxy弹出层插件中文演示及使用讲解
2011/02/24 Javascript
JS+CSS实现一个气泡提示框
2013/08/18 Javascript
JQuery结合CSS操作打印样式的方法
2013/12/24 Javascript
利用Keydown事件阻止用户输入实现代码
2014/03/11 Javascript
iframe里的页面禁止右键事件的方法
2014/06/10 Javascript
JS实现的页面自定义滚动条效果
2015/10/26 Javascript
移动端web滚动分页的实现方法
2017/05/05 Javascript
bootstrap栅格系统示例代码分享
2017/05/22 Javascript
让微信小程序支持ES6中Promise特性的方法详解
2017/06/13 Javascript
jQuery Position方法使用和兼容性
2017/08/23 jQuery
在vue项目创建的后初始化首次使用stylus安装方法分享
2018/01/25 Javascript
layui的表单验证支持ajax判断用户名是否重复的实例
2019/09/06 Javascript
微信小程序左滑删除实现代码实例
2019/09/16 Javascript
JavaScript实现拖动对话框效果的实现代码
2020/10/12 Javascript
vue中defineProperty和Proxy的区别详解
2020/11/30 Vue.js
使用grappelli为django admin后台添加模板
2014/11/18 Python
Django实现web端tailf日志文件功能及实例详解
2019/07/28 Python
pytorch使用horovod多gpu训练的实现
2020/09/09 Python
基于CSS3 animation动画属性实现轮播图效果
2017/09/12 HTML / CSS
斯凯奇澳大利亚官网:SKECHERS澳大利亚
2018/03/31 全球购物
英国电信商店:BT Shop
2019/12/17 全球购物
幼师自荐信范文
2013/10/06 职场文书
家具厂厂长岗位职责
2014/01/01 职场文书
教师个人的自我评价分享
2014/01/02 职场文书
医药个人求职信范文
2014/01/29 职场文书
趣味运动会策划方案
2014/06/02 职场文书
2015年度个人思想工作总结
2015/04/08 职场文书
小学数学继续教育研修日志
2015/11/13 职场文书
Redis特殊数据类型HyperLogLog基数统计算法讲解
2022/06/01 Redis