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实现的简单在线计算器功能
May 11 jQuery
jQuery滑动到底部加载下一页数据的实例代码
May 22 jQuery
详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件
Jun 01 jQuery
jquery处理checkbox(复选框)是否被选中实例代码
Jun 12 jQuery
jQuery实现可编辑表格并生成json结果(实例代码)
Jul 19 jQuery
jQuery实现base64前台加密解密功能详解
Aug 29 jQuery
jQuery EasyUI开发技巧总结
Sep 26 jQuery
jQuery实现简单的回到顶部totop功能示例
Oct 16 jQuery
jQuery读取本地的json文件(实例讲解)
Oct 31 jQuery
jQuery ajax读取本地json文件的实例
Oct 31 jQuery
JQuery元素快速查找与操作
Apr 22 jQuery
浅谈JS和jQuery的区别
Mar 27 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
给多个地址发邮件的类
2006/10/09 PHP
libmysql.dll与php.ini是否真的要拷贝到c:\windows目录下呢
2010/03/15 PHP
PHP在引号前面添加反斜杠(PHP去除反斜杠)
2013/09/28 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(七)
2014/06/23 PHP
php中opendir函数用法实例
2014/11/15 PHP
PHP-FPM运行状态的实时查看及监控详解
2016/11/18 PHP
PHP检查网站是否宕机的方法示例
2017/07/24 PHP
JavaScript获取GridView中用户点击控件的行号,列号
2009/04/14 Javascript
javascript 学习笔记(八)javascript对象
2011/04/12 Javascript
jQuery中的.bind()、.live()和.delegate()之间区别分析
2011/06/08 Javascript
仿新浪微博返回顶部的jquery实现代码
2012/10/01 Javascript
JS代码判断IE6,IE7,IE8,IE9的函数代码
2013/08/02 Javascript
JavaScript中json使用自己总结
2013/08/13 Javascript
jquery使用正则表达式验证email地址的方法
2015/01/22 Javascript
深入理解Vue 的条件渲染和列表渲染
2017/09/01 Javascript
jfinal与bootstrap的登出实战详解
2017/11/27 Javascript
NodeJS爬虫实例之糗事百科
2017/12/14 NodeJs
原生JS实现轮播图效果
2018/10/12 Javascript
JS工厂模式开发实践案例分析
2019/10/17 Javascript
jquery实现简易验证插件封装
2020/09/13 jQuery
python中map、any、all函数用法分析
2015/04/21 Python
Python中Class类用法实例分析
2015/11/12 Python
Python将图片转换为字符画的方法
2020/06/16 Python
django+mysql的使用示例
2018/11/23 Python
python正则表达式 匹配反斜杠的操作方法
2020/08/07 Python
戴森美国官网:Dyson美国
2016/09/11 全球购物
linux面试题参考答案(5)
2016/11/05 面试题
与C++相比,Java中的数组有什么不同
2014/03/25 面试题
毕业生多媒体设计求职信
2013/10/12 职场文书
部门年终奖分配方案
2014/05/07 职场文书
小学生我的梦想演讲稿
2014/08/21 职场文书
2014幼儿园保育员工作总结
2014/11/10 职场文书
2016公务员年度考核评语
2015/12/01 职场文书
创业计划书之电动车企业
2019/10/11 职场文书
Spring Boot 整合 Apache Dubbo的示例代码
2021/07/04 Java/Android
全面盘点MySQL中的那些重要日志文件
2021/11/27 MySQL