博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jQuery on()方法
阅读量:6185 次
发布时间:2019-06-21

本文共 3134 字,大约阅读时间需要 10 分钟。

绑定click事件,使用jquery的$().click(func)?别闹了,属实是low。

虽然之前在ajax回调成功后通过dom添加过元素,遇到过这种情况,事件绑定会失效。今天又遇到了,在此总结下。

jQuery on()方法是官方推荐的绑定事件的一个方法。

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

$().click()和$(document).on('click','要选择的元素',function(){})的

最大的区别即优点是如果动态创建的元素在该选择器选中范围内是能触发回调函数。

$().on()的知识点补充:

  1.从jQuery 1.7开始,on()函数提供了绑定事件处理程序所需的所有功能,用于统一取代以前的bind()、 delegate()、 live()等事件函数。
    $().bind()直接绑定在元素上,和click,blur,mouseon一样的点击事件。
    $().live()是通过冒泡的方式来绑定到元素上的。更适合列表类型的,绑定到document DOM节点上。
    $().delegate()是更精确的小范围的使用事件代理。
   $().on()结合了这三个方法的优势摒弃了劣势。

  2.该函数可以为同一元素、同一事件类型绑定多个事件处理函数。触发事件时,jQuery会按照绑定的先后顺序依次执行绑定的事件处理函数。

  3. 阻止事件冒泡和事件委托的方法:
    A:return false。 
      在事件的处理中,可以阻止默认事件和冒泡事件。

    B:event.preventDefault()

      在事件的处理中,可以阻止默认事件但是允许冒泡事件的发生。

    C:event.stopPropagation().。

      在事件的处理中,可以阻止冒泡但是允许默认事件的发生。

 

jQuery on()扩展开来的几个以前常见的方法有.

bind()
  $("p").bind("click",function(){    alert("The paragraph was clicked.");  });   $("p").on("click",function(){    alert("The paragraph was clicked.");  });
delegate()
  $("#div1").on("click","p",function(){    $(this).css("background-color","pink");  });  $("#div2").delegate("p","click",function(){    $(this).css("background-color","pink");  });
live()
  $("#div1").on("click",function(){    $(this).css("background-color","pink");  });  $("#div2").live("click",function(){    $(this).css("background-color","pink");  });

以上三种方法在jQuery1.8之后都不推荐使用,官方在1.9时已经取消使用live()方法了,所以建议都使用on()方法。

tip:如果你需要移除on()所绑定的方法,可以使用off()方法处理。

$(document).ready(function(){  $("p").on("click",function(){    $(this).css("background-color","pink");  });  $("button").click(function(){    $("p").off("click");  });});

tip:如果你的事件只需要一次的操作,可以使用one()这个方法

$(document).ready(function(){  $("p").one("click",function(){    $(this).animate({fontSize:"+=6px"});  });});

trigger()绑定

$(selector).trigger(event,eventObj,param1,param2,...)$(document).ready(function(){  $("input").select(function(){    $("input").after(" Text marked!");  });  $("button").click(function(){    $("input").trigger("select");  });});

多个事件绑定同一个函数

$(document).ready(function(){  $("p").on("mouseover mouseout",function(){    $("p").toggleClass("intro");  });});

多个事件绑定不同函数

$(document).ready(function(){  $("p").on({    mouseover:function(){$("body").css("background-color","lightgray");},      mouseout:function(){$("body").css("background-color","lightblue");},     click:function(){$("body").css("background-color","yellow");}    });});

绑定自定义事件

$(document).ready(function(){  $("p").on("myOwnEvent", function(event, showName){    $(this).text(showName + "! What a beautiful name!").show();  });  $("button").click(function(){    $("p").trigger("myOwnEvent",["Anja"]);  });});

传递数据到函数

function handlerName(event) {  alert(event.data.msg);}$(document).ready(function(){  $("p").on("click", {msg: "You just clicked me!"}, handlerName)});

适用于未创建的元素

$(document).ready(function(){  $("div").on("click","p",function(){    $(this).slideToggle();  });  $("button").click(function(){    $("

This is a new paragraph.

").insertAfter("button"); });});

项目经理是这么说的,还在用.click,你这样面试是会被刷下去的。。。

转载于:https://www.cnblogs.com/chywx/p/10445505.html

你可能感兴趣的文章
我的友情链接
查看>>
iOS中的视频播放
查看>>
android面试java算法题【安卓进化四】
查看>>
手机端与网页通过websocket通信
查看>>
Exchange刷新已禁用邮箱状态
查看>>
我的友情链接
查看>>
Linux学习之CentOS(二十三)--Linux软件管理之源代码以及RPM软件包管理
查看>>
SQL*Loader使用方法
查看>>
ERP系统容灾方案典型架构
查看>>
我的友情链接
查看>>
D3.js学习
查看>>
kafka监控
查看>>
1-7华为HCNA认证eNSP基础B
查看>>
Linux中SUID和SGID详解
查看>>
windows下安装mysql5.7 (爬过多次坑)总结
查看>>
VIM编辑器的简单应用
查看>>
Django 01
查看>>
域名跳转
查看>>
访问控制
查看>>
两人一组,注册账号密码,注册COOKIE是否能够登陆?
查看>>