当前位置:主页 > jquery教程 > jQuery实现为动态添加的元素绑定事件实例分析

jQuery实现为动态添加的元素绑定事件示例效果

发布:2020-02-12 18:19:28 125


为找教程的网友们整理了jQuery相关的编程文章,网友堵新妹根据主题投稿了本篇教程内容,涉及到jQuery、动态添加、元素绑定、jQuery实现为动态添加的元素绑定事件实例分析相关内容,已被963网友关注,相关难点技巧可以阅读下方的电子资料。

jQuery实现为动态添加的元素绑定事件实例分析

本文实例讲述了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 >';
        var act_s=result.act_s;
        for(var i=0;i<act_s.length;i++){
          html+='<li  <span >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常用插件及用法总结》、《jQuery操作json数据技巧汇总》、《jQuery扩展技巧总结》、《jQuery常见经典特效汇总》及《jquery选择器用法总结》

希望本文所述对大家jQuery程序设计有所帮助。


参考资料

相关文章

  • jQuery实现锚点scoll效果的具体方法

    发布:2019-08-03

    这篇文章主要介绍了jQuery实现锚点scoll效果,实例分析了锚点scoll效果的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下


  • jQuery中的deferred用法分享

    发布:2020-04-20

    deferred对象是jQuery的回调函数解决方案,jQuery之前的版本中异步回调这块做的不是很好,所以后期补上了该解决方案。接下来通过本文给大家介绍jQuery中的derferred使用方法,非常不错,需要的朋


  • jquery如何操作select

    发布:2020-02-01

    这篇文章主要介绍了jquery下拉select控件操作方法分享(jquery操作select),需要的朋友可以参考下


  • jQuery中attr()实例用法详解

    发布:2020-02-15

    这篇文章主要介绍了jQuery中attr()方法用法,实例分析了attr()方法的功能、定义及设置或返回匹配元素属性值的使用技巧,需要的朋友可以参考下


  • 如何解决jquery的flexigrid无法显示数据提示获取到数据问题

    发布:2021-04-19

    升级了IE10,发现flexigrid无法显示数据,提示获取到了数据,但没任何报错任何显示,经过试验和跟踪,修改如下,有类似问题的朋友可以参考下哈


  • jQuery实现3d旋转星空效果实例代码

    发布:2020-06-04

    这篇文章主要介绍了jQuery实现炫丽的3d旋转星空效果,涉及jQuery数值运算与页面元素属性动态变换相关操作技巧,需要的朋友可以参考下


  • jquery插件dialog实现弹框效果的实例内容

    发布:2020-04-23

    这篇文章介绍了jquery中插件dialog实现弹框效果实例代码,有需要的朋友可以参考一下


  • 实例详解jQuery动态增减行

    发布:2020-03-09

    这篇文章主要介绍了jQuery动态增减行的实例代码解析,本文图文并茂给大家介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下


网友讨论