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插件FusionCharts绘制ScrollColumn2D图效果示例【附demo源码下载】
Mar 22 jQuery
jQuery+pjax简单示例汇总
Apr 21 jQuery
详谈jQuery中使用attr(), prop(), val()获取value的异同
Apr 25 jQuery
jquery动态赋值id与动态取id方法示例
Aug 21 jQuery
jQuery实现base64前台加密解密功能详解
Aug 29 jQuery
springmvc接收jquery提交的数组数据代码分享
Oct 28 jQuery
jQuery实现动态加载select下拉列表项功能示例
May 31 jQuery
jQuery实现点击图标div循环放大缩小功能
Sep 30 jQuery
jQuery实现的隔行变色功能【案例】
Feb 18 jQuery
JQuery发送ajax请求时中文乱码问题解决
Nov 14 jQuery
jQuery加PHP实现图片上传并提交的示例代码
Jul 16 jQuery
jQuery实现简单三级联动效果
Sep 05 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实现过滤掉非汉字字符只保留中文字符
2015/06/04 PHP
WordPress后台中实现图片上传功能的实例讲解
2016/01/11 PHP
PHP面向对象继承用法详解(优化与减少代码重复)
2016/12/02 PHP
基于Laravel5.4实现多字段登录功能方法示例
2017/08/11 PHP
jquery插件 autoComboBox 下拉框
2010/12/22 Javascript
代码触发js事件(click、change)示例应用
2013/12/13 Javascript
jQuery oLoader实现的加载图片和页面效果
2015/03/14 Javascript
JS实现的仿淘宝交易倒计时效果
2015/11/27 Javascript
js字符串引用的两种方式(必看)
2016/09/18 Javascript
JavaScript基于自定义函数判断变量类型的实现方法
2016/11/23 Javascript
babel基本使用详解
2017/02/17 Javascript
js以及jquery实现手风琴效果
2020/04/17 Javascript
JavaScript中常见的八个陷阱总结
2017/06/28 Javascript
vue vuex vue-rouert后台项目——权限路由(适合初学)
2017/12/29 Javascript
全面解析vue router 基本使用(动态路由,嵌套路由)
2018/09/02 Javascript
JS实现集合的交集、补集、差集、去重运算示例【ES5与ES6写法】
2019/02/18 Javascript
angular 实现同步验证器跨字段验证的方法
2019/04/11 Javascript
Node.js学习教程之Module模块
2019/09/03 Javascript
JS变量提升及函数提升实例解析
2020/09/03 Javascript
Vue filter 过滤器、以及在table中的使用介绍
2020/09/07 Javascript
[56:41]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs OG
2018/04/01 DOTA
详解Python中的序列化与反序列化的使用
2015/06/30 Python
python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别
2018/06/04 Python
Python3正则匹配re.split,re.finditer及re.findall函数用法详解
2018/06/11 Python
三步实现Django Paginator分页的方法
2019/06/11 Python
Python实现的企业粉丝抽奖功能示例
2019/07/26 Python
matplotlib jupyter notebook 图像可视化 plt show操作
2020/04/24 Python
Django DRF路由与扩展功能的实现
2020/06/03 Python
python如何控制进程或者线程的个数
2020/10/16 Python
详解python模块pychartdir安装及导入问题
2020/10/22 Python
函授药学自我鉴定
2014/02/07 职场文书
大学生个人先进事迹材料范文
2014/05/03 职场文书
大学生个人学年总结
2015/02/15 职场文书
css display table 自适应高度、宽度问题的解决
2021/05/07 HTML / CSS
html+css实现环绕倒影加载特效
2021/07/07 HTML / CSS
Python中的嵌套循环详情
2022/03/23 Python