jquery动态生成html代码绑定事件

  今天工做中须要在页面动态生成html代码,但发现新生成的代码的click事件失效了(非动态生成的代码已经绑定了click事件),因而在网上找了不少解决办法,不少都比较复杂,且使用的jquery都比较老,因而结合网上加上本身的测试,找到了一种解决方法。html

  我使用的jquery是1.9.11,jquery1.7以后就将live方法废弃了,新增了on和off方法,个人解决办法就是使用on方法,首先看代码:jquery

    <div class="h3">
        <h3>李健1</h3>
        <h3>李健2</h3>
        <h3>李健3</h3>
        <h3>李健4</h3>
        <h3>李健5</h3>
    </div>
    <div class="div">增长</div>        
    $(function(){
            $(".div").click(function(){
                var h = "";
                for(var i=0;i<5;i++){
                    h += "<h3>李健"+i+i+"</h3>";
                }
                $(".h3").append(h);
            });
    });
//这里我每点击增长一次会在
<div class="h3">最后增长5行<h3>李健i</h3>,我如今要让全部的<h3>都绑定click事件(包括动态生成的)

  $(".h3").on("click","h3",{foo:"文本:"},function(event){
    alert(event.data.foo+this.textContent);
  });浏览器

  是否是很简单,这里选择<div class="h3">做为父元素调用on方法绑定click事件,这样父元素下的全部元素都绑定了click事件,有时候并不须要全部的都绑定,那怎么办?好办,只需在"click"后增长选择器(也就是你想选定的子元素),{foo:"文本:"}:表示传给event.data的数据(参数),在处理函数中咱们能够调用event.data.foo读取到传入的函数值。打开浏览器调试工具你还能够获取<h3>中的文本,我这里是this.textContent,你们能够根据实际状况发挥。app

  总之,记住若是你要绑定动态生成的元素事件,必定要先找到他的父元素(父元素不能是动态生成的,不然继续往上找),在父元素中绑定,而后再进行过滤就ok了,对了,我测试了hover事件发现不行,没去深究缘由。函数

相关文章
相关标签/搜索