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 08 jQuery
jQuery+ajax实现局部刷新的两种方法
Jun 08 jQuery
jQuery实现html table行Tr的复制、删除、计算功能
Jul 10 jQuery
jQuery列表检索功能实现代码
Jul 17 jQuery
JQuery 获取多个select标签option的text内容(实例)
Sep 07 jQuery
jQuery选择器之属性筛选选择器用法详解
Sep 19 jQuery
jQuery响应滚动条事件功能示例
Oct 14 jQuery
基于jQuery的$.getScript方法去加载javaScript文档解析
Nov 08 jQuery
jquery animate动画持续运动的实例
Nov 29 jQuery
jQuery实现的导航条点击后高亮显示功能示例
Mar 04 jQuery
jQuery弹框插件使用方法详解
May 26 jQuery
JQuery+drag.js上传图片并且实现图片拖曳
Nov 18 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中用foreach来操作数组的代码
2011/07/17 PHP
详解php中空字符串和0之间的关系
2016/10/23 PHP
laravel 解决Validator使用中出现的问题
2019/10/25 PHP
javascript 实现简单的table排序及table操作练习
2012/12/28 Javascript
js获取通过ajax返回的map型的JSONArray的方法
2014/01/09 Javascript
node.js中的fs.unlinkSync方法使用说明
2014/12/15 Javascript
实例讲解JavaScript的Backbone.js框架中的View视图
2016/05/05 Javascript
Bootstrap优化站点资源、响应式图片、传送带使用详解3
2016/10/14 Javascript
node跨域请求方法小结
2017/08/25 Javascript
JavaScript迭代器的含义及用法
2019/06/21 Javascript
JQuery复选框全选效果如何实现
2020/05/08 jQuery
详解在IDEA中将Echarts引入web两种方式(使用js文件和maven的依赖导入)
2020/07/11 Javascript
python根据时间生成mongodb的ObjectId的方法
2015/03/13 Python
Python多线程编程(四):使用Lock互斥锁
2015/04/05 Python
详解Python的Django框架中的模版相关知识
2015/07/15 Python
python制作爬虫爬取京东商品评论教程
2016/12/16 Python
使用Python实现windows下的抓包与解析
2018/01/15 Python
基于Django用户认证系统详解
2018/02/21 Python
python 自动去除空行的实例
2018/07/24 Python
python统计中文字符数量的两种方法
2019/01/31 Python
python傅里叶变换FFT绘制频谱图
2019/07/19 Python
pytorch 利用lstm做mnist手写数字识别分类的实例
2020/01/10 Python
python3 使用openpyxl将mysql数据写入xlsx的操作
2020/05/15 Python
Python使用OpenPyXL处理Excel表格
2020/07/02 Python
使用HTML和CSS实现的标签云效果(附demo)
2021/02/03 HTML / CSS
米兰必去买手店排行榜首位:Antonioli
2016/09/11 全球购物
德国宠物用品、宠物食品及水族馆网上商店:ZooRoyal
2017/07/09 全球购物
泰国折扣酒店预订:Hotels2Thailand
2018/03/20 全球购物
历史专业个人求职信范文
2013/12/07 职场文书
中学运动会广播稿
2014/01/19 职场文书
电子商务专业毕业生求职信
2014/06/12 职场文书
2015年采购部工作总结
2015/04/23 职场文书
2015质检员个人年终工作总结
2015/10/23 职场文书
幼儿园2016年圣诞活动总结
2016/03/31 职场文书
一文搞清楚MySQL count(*)、count(1)、count(col)区别
2022/03/03 MySQL
Rust中的Struct使用示例详解
2022/08/14 Javascript