jQuery 事件注册和绑定及this与event.target的区别浅析

最近小码哥,在研究学习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改为你本地的文件,可直接运行,比较干巴,将就一下哈。代码里介绍了几个事件注册和绑定的编写方法,各有优缺点,就不赘述了。主要想说的就是未注释的那段,文字比较苍白,希望大家用的到的,可以实际操作一下。

时间: 2024-10-12 21:28:31

jQuery 事件注册和绑定及this与event.target的区别浅析的相关文章

jquery 事件 多次绑定,多次触发,怎么清除历史绑定事件

Jquery在处理事件的时候有时候会遇到预想不到的结果 如下 <a id="link_foo">Foo</a> <script type="text/javascript">     function bindFooClick(){       $("#link_foo").click(function(){         console.log("www.vincentguo.cn");

jquery中this和event.target的区别

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>this和event.target的区别</title> <script type="text/javascript" src="js/jquery.min.js" ></script></h

jQuery事件处理器的绑定及解除方法

前几天用bind()方法做事件绑定的时候发现还有其他几种事件绑定的方法,查阅了之后对比总结一下.内容详情请点链接~欢迎讨论拍砖~ .bind() .bind(eventType [, eventData], handler)    v1.0 给被选元素绑定一个事件处理程序.eventType为事件类型如"click","submit","mousedown"等; eventData为传给handler的数据(注意变量作用域); handler为事

【Jquery】this和event.target的区别

1.js中事件是会冒泡的,所以this是可以变化的,但event.target不会变化,它永远是直接接受事件的目标DOM元素: 2.this和event.target都是dom对象,如果要使用jquey中的方法可以将他们转换为jquery对象:$(this)和$(event.target); ex: js代码 1 $(function(){ 2 $("li").live("click",function(event){ 3 $("#temp").

jquery 事件注册 与重复事件处理

<!doctype html> <html lang="us"> <head> <meta charset="utf-8"> <title> test</title> <script src="./jquery-1.10.2.js" type="text/javascript"></script> <script> fu

jquery事件之event.target用法详解

1. 定义和用法: 显示哪个 DOM 元素触发了事件: $("p, button, h1, h2").click(function(event){ $("div").html("Triggered by a " + event.target.nodeName + " element."); }); 定义和用法 target 属性规定哪个 DOM 元素触发了该事件. 语法 event.target参数 描述 event 必需.规

jquery 关于event.target使用的几点说明介绍

event.target说明:引发事件的DOM元素. this和event.target的区别js中事件是会冒泡的,所以this是可以变化的,但event.target不会变化,它永远是直接接受事件的目标DOM元素: this和event.target的相同点this和event.target都是dom对象,如果要使用jquey中的方法可以将他们转换为jquery对象:$(this)和$(event.target); 这使我想起了以前写的一个例子: 代码如下: //del event    $(

jquery中使用event.target的几点说明 (转自http://blog.csdn.net/zm2714/article/details/8119642)

jquery中使用event.target的几点说明 event.target 说明:引发事件的DOM元素. this和event.target的区别 js中事件是会冒泡的,所以this是可以变化的,但event.target不会变化,它永远是直接接受事件的目标DOM元素: this和event.target的相同点 this和event.target都是dom对象,如果要使用jquey中的方法可以将他们转换为jquery对象:$(this)和$(event.target); 这使我想起了以前写

第77天:jQuery事件绑定触发

一.元素操作 1. 高度和宽度 $("div").height(); // 高度 $("div").width(); // 宽度 .height()方法和.css("height")的区别: 返回值不同,.height()方法返回的是 数字类型(20),.css("height")返回的是字符串类型(20px),因此.height()方法常用在参与数学计算的时候 2.坐标值 $("div").offset(