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实现的MSBar2D图效果示例【附demo源码】
Mar 24 jQuery
jQuery判断邮箱格式对错实例代码讲解
Apr 12 jQuery
jQuery+pjax简单示例汇总
Apr 21 jQuery
解决Jquery下拉框数据动态获取的问题
Jan 25 jQuery
vue+jquery+lodash实现滑动时顶部悬浮固定效果
Apr 28 jQuery
使用jquery DataTable和ajax向页面显示数据列表的方法
Aug 09 jQuery
深入浅析angular和vue还有jquery的区别
Aug 13 jQuery
JQuery通过后台获取数据遍历到前台的方法
Aug 13 jQuery
jQuery事件blur()方法的使用实例讲解
Mar 30 jQuery
jquery+css实现Tab栏切换的代码实例
May 14 jQuery
jQuery提示框插件SweetAlert用法分析
Aug 05 jQuery
jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)
Nov 07 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
php删除与复制文件夹及其文件夹下所有文件的实现代码
2013/01/23 PHP
php将12小时制转换成24小时制的方法
2015/03/31 PHP
php常量详细解析
2015/10/27 PHP
深入浅出讲解:php的socket通信原理
2016/12/03 PHP
IE php关于强制下载文件的代码
2008/08/23 Javascript
JavaScript中SQL语句的应用实现
2010/05/04 Javascript
获取下拉列表框的值是数组,split,$.inArray示例
2013/11/13 Javascript
浅谈jQuery中replace()方法
2015/05/13 Javascript
javascript实现带下拉子菜单的导航菜单效果
2015/05/14 Javascript
基于JS实现PHP的sprintf函数实例
2015/11/14 Javascript
微信支付 JS API支付接口详解
2016/07/11 Javascript
JS中正则表达式全局匹配模式 /g用法详解
2017/04/01 Javascript
react-native使用react-navigation进行页面跳转导航的示例
2017/09/07 Javascript
JavaScript的setter与getter方法
2017/11/29 Javascript
深入理解JavaScript的值传递和引用传递
2018/10/24 Javascript
小程序实现图片预览裁剪插件
2019/11/22 Javascript
Vue.js的模板语法详解
2020/02/16 Javascript
vue 使用rules对表单字段进行校验的步骤
2020/12/25 Vue.js
python制作花瓣网美女图片爬虫
2015/10/28 Python
pandas基于时间序列的固定时间间隔求均值的方法
2019/07/04 Python
Python调用shell命令常用方法(4种)
2020/05/11 Python
HTML5语音识别标签写法附图
2013/11/18 HTML / CSS
HTML5不支持标签和新增标签详解
2016/06/27 HTML / CSS
美国奢侈品在线团购网站:Gilt City
2017/11/16 全球购物
英国最大的运动营养公司之一:LA Muscle
2018/07/02 全球购物
销售行业个人求职自荐信
2013/09/25 职场文书
如何写你的创业计划书
2014/01/07 职场文书
写给女朋友的道歉信
2014/01/08 职场文书
风险评估实施方案
2014/03/09 职场文书
湖南省召开党的群众路线教育实践活动总结大会报告
2014/10/21 职场文书
学生犯错保证书
2015/05/09 职场文书
离婚起诉书范本
2015/05/18 职场文书
企业党支部工作总结2015
2015/05/21 职场文书
军训决心书范文
2015/09/22 职场文书
HTML基础详解(下)
2021/10/16 HTML / CSS