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使用eraser.js插件实现擦除、刮刮卡效果的方法【附eraser.js下载】
Apr 28 jQuery
jQuery操作之效果详解
May 19 jQuery
jquery实现图片放大点击切换
Jun 06 jQuery
jQuery Json数据格式排版高亮插件json-viewer.js使用方法详解
Jun 12 jQuery
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
Jul 17 jQuery
原生js jquery ajax请求以及jsonp的调用方法
Aug 04 jQuery
jquery实现左右轮播图效果
Sep 28 jQuery
利用jQuery实现简单的拖曳效果实例代码
Oct 20 jQuery
jQuery+SpringMVC中的复选框选择与传值实例
Jan 08 jQuery
jQuery删除/清空指定元素的所有子节点实例代码
Jul 04 jQuery
使用jQuery实现购物车
Oct 29 jQuery
ajax jquery实现页面某一个div的刷新效果
Mar 04 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中判断字符串是否全是中文或含有中文的实现代码
2011/09/16 PHP
PHP+Mysql日期时间如何转换(UNIX时间戳和格式化日期)
2012/07/15 PHP
php更新mysql后获取影响的行数发生异常解决方法
2013/03/28 PHP
IIS+fastcgi下PHP运行超时问题的解决办法详解
2013/06/20 PHP
ThinkPHP调用common/common.php函数提示错误function undefined的解决方法
2014/08/25 PHP
关于php微信订阅号开发之token验证后自动发送消息给订阅号但是没有消息返回的问题
2015/12/21 PHP
Laravel5.* 打印出执行的sql语句的方法
2017/07/24 PHP
JS 控制非法字符的输入代码
2009/12/04 Javascript
js通过八个点 拖动改变div大小的实现方法
2014/03/05 Javascript
加随机数引入脚本不让浏览器读取缓存
2014/09/04 Javascript
JavaScript参数个数可变的函数举例说明
2014/10/10 Javascript
同一个网页中实现多个JavaScript特效的方法
2015/02/02 Javascript
JS判断字符串包含的方法
2015/05/05 Javascript
jquery 中ajax执行的优先级
2015/06/22 Javascript
Javascript将双字节字符转换成单字节字符并计算长度
2016/06/22 Javascript
jQuery实现table中的tr上下移动并保持序号不变的实例代码
2016/07/11 Javascript
1秒50万字!js实现关键词匹配
2016/08/01 Javascript
JavaScript学习笔记之图片库案例分析
2019/01/08 Javascript
JS中的一些常用的函数式编程术语
2019/06/15 Javascript
JavaScript自定义超时API代码实例
2020/04/30 Javascript
JavaScript前后端JSON使用方法教程
2020/11/23 Javascript
[01:45]典藏宝瓶2+祈求者身心——这就是DOTA2TI9总奖金突破3000万美元的秘密
2019/07/21 DOTA
python实现排序算法
2014/02/14 Python
python 内置函数filter
2017/06/01 Python
python虚拟环境的安装配置图文教程
2017/10/20 Python
K-means聚类算法介绍与利用python实现的代码示例
2017/11/13 Python
python爬虫面试宝典(常见问题)
2018/03/02 Python
Python 面试中 8 个必考问题
2018/11/16 Python
利用python在大量数据文件下删除某一行的例子
2019/08/21 Python
Python创建一个元素都为0的列表实例
2019/11/28 Python
使用PyQt5实现图片查看器的示例代码
2020/04/21 Python
pycharm 如何取消连按两下shift出现的全局搜索
2021/01/15 Python
SQL Server 2000数据库的文件有哪些,分别进行描述
2013/03/30 面试题
我的梦想演讲稿500字
2014/08/21 职场文书
导游词之西湖雷峰塔
2019/09/18 职场文书
MySQL系列之十三 MySQL的复制
2021/07/02 MySQL