jquery为新增元素添加事件

    <script type="text/javascript">
        var $id=1;
        $(function(){
            $(".hehe").click(function(){
                $id+=1;
                $(this).after("<div class='hehe' id='"+$id+"'>"+$id+"</div>");
            });
        });
    </script>
  <body>   <div class="hehe" id="1">1</div>   </body>

这种形式的事件只作用于已经存在的元素,新增的元素无效。以上例子中只能点击id=1的div,不能点击id=234..

    <script type="text/javascript">
        var $id=1;
        $(function(){
            $("body").on("click",".hehe",function(){
                $id+=1;
                $(this).after("<div class='hehe' id='"+$id+"'>"+$id+"</div>");
            });
    </script>
  <body>   <div class="hehe" id="1">1</div>   </body>

以上例子可以为新增的元素绑定事件,新增的id都可以点击。当click时,事件从.hehe开始冒泡到body,然后触发body内的新增的.hehe,从而绑定事件。

    <script type="text/javascript">
        var $id=1;
        $(function(){
            $(".hehe").on("click",function(){
                $id+=1;
                $(this).after("<div class='hehe' id='"+$id+"'>"+$id+"</div>");
            });
        });
    </script>
    
    <body>
        <div class="hehe" id="1">1</div>
    </body>

但是以上代码只能也点击id1,原因是当click时,事件只能冒泡到第一个.hehe,而新增的.hehe是同级元素,不能为他们绑定事件。

jQuery on()方法是官方推荐的绑定事件的一个方法,适用于未创建的元素。

$(selector).on(event,childSelector,data,function,map)

posted @ 2015-08-26 16:12  fj0716  阅读(630)  评论(0编辑  收藏  举报