on('click')与.click()事件的区别

on('click')与.click()事件的区别

原创 2017年03月21日 15:22:04
[javascript] view plain copy
 
  1. $(selector).on('click',function(){ });  
支持动态绑定元素,即页面上元素有添加或变化后仍可绑定,前提是selector须是目标绑定元素的父元素,如绑定body里的动态li元素:
[javascript] view plain copy
 
  1. $('body).on('click','ul li',function(){});  
若直接绑定动态的li元素将不成功,效果与$('').click()相同。
$('').click()事件只能绑定静态元素。
 
详见:

JQuery.on() 函数详解

 

js中事件绑定,$("body").on("click")与$("").click()区别

 
<dl>
     <dt>性别</dt>
     <dd>
            <a href="javascript:void(0);" class="sex_icon set_icon"></a><p>男</p>
            <a href="javascript:void(0);" class="sex_icon set_icon"></a><p>女</p>
            <a href="javascript:void(0);" class="sexon_icon set_icon"></a><p>保密</p>
            </dd>
</dl>

这是一个选择 男、女、保密 的功能
但 下面的 js 一个有问题,一个成功:

有问题、有bug的:

 $(".sex_icon").click(function(){
        $(this).removeClass().addClass("sexon_icon set_icon").siblings("a").removeClass().addClass("sex_icon set_icon");      
    });

    或者是:

    $(".sex_icon").click(function(){
        $(this).removeClass("sex_icon").addClass("sexon_icon").siblings("a").removeClass("sexon_icon").addClass("sex_icon");

    });

下面是成功的、无问题的:

 $("body").on("click",".sex_icon",function(){
         $(this).removeClass("sex_icon").addClass("sexon_icon").siblings("a").removeClass("sexon_icon").addClass("sex_icon");
    });

解析原因:

那是因为另外两个选项的点击事件代码里面给的。也就是动态给的sex_icon样式。但是element.click这种写法不支持给动态元素或者样式重新绑定事件。

支持给动态元素和属性绑定事件的是live和on,其中live在JQUERY 1.7之后就不推荐使用了。现在主要用on,使用on的时候也要注意,on前面的元素也必须在页面加载的时候就存在于dom里面。动态的元素或者样式等,可以放在on的第二个参数里面。

 
分类: jquery
 
posted @ 2017-12-07 14:58  sky20080101  阅读(195)  评论(0)    收藏  举报