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实现字体颜色渐变效果的方法
Mar 29 jQuery
为Jquery EasyUI 组件加上清除功能的方法(详解)
Apr 13 jQuery
jQuery实现返回顶部按钮和scroll滚动功能[带动画效果]
Jul 05 jQuery
jQuery实现html table行Tr的复制、删除、计算功能
Jul 10 jQuery
利用jQuery实现简单的拖曳效果实例代码
Oct 20 jQuery
vue-cli webpack 引入jquery的方法
Jan 10 jQuery
基于jQuery实现Ajax验证用户名是否可用实例
Mar 25 jQuery
jQuery中常用动画效果函数知识点整理
Aug 19 jQuery
js jquery 获取某一元素到浏览器顶端的距离实现方法
Sep 05 jQuery
jQuery实现文本显示一段时间后隐藏的方法分析
Jun 20 jQuery
jQuery实现input[type=file]多图预览上传删除等功能
Aug 02 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模拟SQL Server的两个日期处理函数
2006/10/09 PHP
关于php 高并发解决的一点思路
2017/04/16 PHP
浅谈Yii乐观锁的使用及原理
2017/07/25 PHP
新闻内页-JS分页
2006/06/07 Javascript
JavaScript Event学习第二章 Event浏览器兼容性
2010/02/07 Javascript
JavaScript自定义方法实现trim()、Ltrim()、Rtrim()的功能
2013/11/03 Javascript
js实现目录定位正文示例
2013/11/14 Javascript
jQuery获取节点和子节点文本的方法
2014/07/22 Javascript
微信小程序-详解数据缓存
2016/11/24 Javascript
xmlplus组件设计系列之图标(ICON)(1)
2017/05/05 Javascript
基于vue-simplemde实现图片拖拽、粘贴功能
2018/04/12 Javascript
jQuery实现表单动态添加数据并提交的方法
2018/07/19 jQuery
微信小程序云开发如何实现数据库自动备份实现
2019/08/16 Javascript
vue页面跳转实现页面缓存操作
2020/07/22 Javascript
js实现验证码功能
2020/07/24 Javascript
vue组件入门知识全梳理
2020/09/21 Javascript
[02:51]2014DOTA2国际邀请赛 IG战队官方纪录片
2014/07/21 DOTA
python实现堆栈与队列的方法
2015/01/15 Python
利用Python找出序列中出现最多的元素示例代码
2017/12/08 Python
python读取文件名并改名字的实例
2019/01/07 Python
详解Python函数式编程—高阶函数
2019/03/29 Python
Python计算一个点到所有点的欧式距离实现方法
2019/07/04 Python
pytorch 实现删除tensor中的指定行列
2020/01/13 Python
Python基于QQ邮箱实现SSL发送
2020/04/26 Python
PyTorch中Tensor的数据类型和运算的使用
2020/09/03 Python
html5 datalist标签使用示例(自动完成组件)
2014/05/04 HTML / CSS
英国现代家具和装饰网站:PN Home
2018/08/16 全球购物
北京某公司的.net笔试题
2014/03/20 面试题
英文自荐信
2013/12/15 职场文书
三年大学生活自我鉴定
2014/01/21 职场文书
2014法院干警廉洁警示教育思想汇报
2014/09/13 职场文书
检察机关个人对照检查材料
2014/09/15 职场文书
党的群众路线教育实践活动自我剖析材料
2014/10/08 职场文书
企业战略合作意向书
2015/05/08 职场文书
英语投诉信范文
2015/07/03 职场文书
javascript代码简写的几种常用方式汇总
2021/08/23 Javascript