jQuery粗略源码解析6 事件和事件对象

2020-02-25  本文已影响0人  波拉拉

1 事件

1.1 事件命名空间
$(".my").on("click",function () {console.log("1")})
      .on("click.a",function () {console.log("2")})
      .on("click.a.b",function () {console.log("3")})
      .trigger("click")//触发1,2,3
      .trigger("click.a")//触发2,3
      .off("click.a.b") .trigger("click")//触发1,2
      .trigger("click!");//只触发1

详解: https://www.haorooms.com/post/jquery_namespaces_eventname

1.2 事件处理

参数1:一个或多个用空格分隔的事件类型和可选的命名空间。

  $(":root").on("click keydown",function () {console.log("1")})

参数2:过滤后代的选择器,实现事件委托。

<ul>
    <li>1</li><li>2</li><li>3</li><li>4</li><li>5</li>
</ul>
<script>
    $("ul").on("click","li",function () {
        console.log($(this).text());
    })
</script>

参数3:要传递event.data给事件处理函数的数据。

$("ul").on("click",{name:"bolala"},function (e) {
        console.log(e.data.name);
    })

参数4:要执行的函数或者false(取消冒泡和默认行为)。

$(":submit").submit(function () {
        console.log("|haha");
    });
    $("p").click(function () {
        $(":submit").triggerHandler("submit");
//        只触发自定义事件 不执行默认,不冒泡
    })
1.3 切换事件
  $("p").hover(function () {$(this).toggleClass("active");})
        .next("span")
        .toggle(
            function () {$(this).addClass("active")}, 
            function () {$(this).removeClass("active")})
1.3 简写事件

2 事件对象

上一篇 下一篇

猜你喜欢

热点阅读