最近小码哥,在研究学习nodejs以及相关框架webpack、express、reactjs等等,为了将来,为了RMB,小码哥牢记自我充电,以备不时之需。

在学习reactjs的时候,在前辈ruanyifeng的博文里看到了一个以前没怎么注意的知识点。是与this和event.target之间的区别有关的。当时感觉就蒙了,发现event.target貌似印象不深啊,,瞬间小码哥开启了奔跑模式,,,

各种baidu,各种Chrome biying等等,发现区分不难,就是比较细致。不细分析,有点晕!


先给个总结,结合前辈的讲解和自己的理解得出:

1、作为前端人员,对于上下文的代表this貌似都不陌生,陌生的就是有时候容易分不清this最后代表的是谁了。在事件注册和绑定上,this指代的是事件注册和绑定的对象元素。即,谁绑定了click等事件,this一般指代谁。在简单的事件里,this又叫上下文。

2、但是,作为前端人员,event.target并不应该陌生,但却又用的不多,,总之,小码哥看到它的时候萌B了,,那event.target代表的有是神马呢?在自己写的demo里,反复试验,总算摸清了,它最终代表的是谁了!event.target和事件绑定及注册关联不大,但是和事件发生的时候,所直接出发的元素有大关联。


以上两点,是文字叙述,有点苍白,,对小白前端来说,估计也会萌B。。。


实践是检验真理的唯一标准,这是某个为人说的。在IT业,实实在在的demo代码是检验事件是否能通的唯一标准。


代码如下:(希望新老码农光看勿喷,默默的哈~)

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8"/>

<title></title>

</head>


<body class="oBody">

<ul class="oUl" style="padding:30px;background:#ff0;margin:30px;">

      <li class="oLi oLi1">item 1

        <ul class="oOul" style="background:#f60;">

          <li>sub item 1-a</li>

          <li>sub item 1-b</li>

        </ul>

      </li>

      <li class="oLi oLi2">item 2

        <ul class="oOul" style="background:#06f;">

          <li>sub item 2-a</li>

          <li>sub item 2-b</li>

        </ul>

      </li>

  </ul>

<script type="text/javascript" src="js/jquery-2.1.1.js"></script>

<script type="text/javascript">

$(function(){

    $(".oUl").children().find("ul").hide();

    // $(".oLi").click(function(){

    //     $(this).children("ul").toggle();

    // });

    // $(".oLi").on("click",function(){

    //     $(this).children("ul").toggle();

    // });

    $("body").on("click",function(){

        alert(event.target.className);

        $(event.target).children(".oOul").toggle();

        //$(event.target).children().find(".oOul").toggle();

        //$(this).children().find("ul").toggle();//this具有向下捕获的现象

        $(event.target).css("font-size","22px");

    });

    // $("body").on("click",".oLi",function(){

    //     alert(event.target.className);

    //     //$(event.target).children(".oOul").toggle();

    //     $(this).children(".oOul").toggle();

    // });


});

</script>

</body>

</html>


代码只要把jquery改为你本地的文件,可直接运行,比较干巴,将就一下哈。代码里介绍了几个事件注册和绑定的编写方法,各有优缺点,就不赘述了。主要想说的就是未注释的那段,文字比较苍白,希望大家用的到的,可以实际操作一下。