jQuery的事件委托和this、$(this)

  首先什么是事件委托,一般我们设置事件监听的时候都是在需要触发事件的节点上设置。假设一个nav节点下有几十上百个li标签,就算使用循环绑定都是相当耗费内存,使页面速度下降。为了解决这个问题可以使用事件委托,将事件委托给他们共同的父元素节点ul上,通过事件的冒泡将事件传递到点击节点的父节点ul上,从而触发事件。

//需要绑定事件的nav标签
<nav>
            <a href="jq_load.html">HOME</a>
            <a href="jq_load2.html">ROUTE</a>
            <a href="jq_load3.html">TOYS</a>
            <a href="index.html">TIMETABLE</a>
</nav>
//jQuery文件
$(function(){
    $(‘nav‘).on(‘click‘,function(e){
        console.log(e.target.innerText);    //HOME,发生点击事件的DOM元素
        console.log(this);   //<nav>...</nav>,绑定事件的对象
        console.log($(this)); //jQuery.fn.init [nav, context: nav],nav对象
    });
});

  每个事件处理函数都会获得一个事件对象,该对象中包含和此事件相关的方法及属性。on方法的最后一个参数是一个函数,当触发事件时执行这个函数,该函数会自动传入事件对象作为其参数。

  写这个是因为今天写代码,将e.target和this、$(this)弄混淆了

  e.target 获取的是当前触发的那个对象,并不是绑定事件的那个对象。且不可以使用jQuery方法

  this 在全局下默认指向window对象,对象中指向这个对象,构造函数中指向实例对象,在这里则指向绑定事件的nav元素对象,且不可以使用jQuery方法

  $(this) 可以创建一个包含当前元素的jQuery对象,我理解为this的封装(水平有限),和this一样指向nav元素对象,可以使用jQuery方法。

原文地址:https://www.cnblogs.com/tanhuidong/p/8854947.html

时间: 2024-10-16 23:13:52

jQuery的事件委托和this、$(this)的相关文章

JS与Jquery的事件委托机制

传送:http://www.ituring.com.cn/article/467 概念: 什么是事件委托:通俗的讲,事件就是onclick,onmouseover,onmouseout,等就是事件,委托呢,就是让别人来做,这个事件本来是加在某些元素上的,然而你却加到别人身上来做,完成这个事件. 举个列子:有三个同事预计会在周一收到快递.为签收快递,有两种办法:一是三个人在公司门口等快递:二是委托给前台MM代为签收.现实当中,我们大都采用委托的方案(公司也不会容忍那么多员工站在门口就为了等快递).

JS与Jquery的事件委托

参考:http://www.ituring.com.cn/article/467 概念: 什么是事件委托:通俗的讲,事件就是onclick,onmouseover,onmouseout,等就是事件,委托呢,就是让别人来做,这个事件本来是加在某些元素上的,然而你却加到别人身上来做,完成这个事件. 举个列子:有三个同事预计会在周一收到快递.为签收快递,有两种办法:一是三个人在公司门口等快递:二是委托给前台MM代为签收.现实当中,我们大都采用委托的方案(公司也不会容忍那么多员工站在门口就为了等快递).

什么是jQuery的事件委托

什么是jQuery的事件委托: 事件委托主要是利用事件冒泡现象来实现的,对于事件委托的精准的掌握,可以有利于提高代码的执行效率.先看一段代码实例: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.51texiao.cn/" /> <title&g

jQuery的事件委托实例分析

事件委托主要是利用事件冒泡现象来实现的,对于事件委托的精准的掌握,可以有利于提高代码的执行效率.先看一段代码实例: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>脚本之家</title> <style type="text/css"> table{ width:300px; height:60px; backg

jQuery代码优化 事件委托篇

<转自 http://www.jb51.net/article/28770.htm> 参考文章:  解密jQuery事件核心 - 绑定设计(一) 参考文章:  解密jQuery事件核心 - 绑定设计(二) jQuery为绑定和委托事件提供了.bind()..live()和.delegate()方法.本文在讨论这几个方法内部实现的基础上,展示它们的优劣势及适用场合. 事件委托 事件委托的事例在现实当中比比皆是.比如,有三个同事预计会在周一收到快递.为签收快递,有两种办法:一是三个人在公司门口等快

JQuery的事件委托;jQuery注册事件;jQuery事件解绑

一.事件 ①事件委托:就是给子元素的父元素或者祖先元素注册一个事件,但是事件的执行者是子元素,委托事件的好处是能够给动态创建出来时元素也加上事件. ②简单事件:就是给自己注册事件自己执行动态创建出来的事件不会有事件. ③使用方法:$("span").on("click",function(){alert("这是一个简单事件");}): $("div").on("click", "span"

关于jquery的事件委托-bind,live,delegate,on的区别发展

1.bind()方法 (只能给已经存在的元素上绑定事件) 只能给调用它的时候已经存在的元素绑定事件,不能给未来新增的元素绑定事件. $('ul li').bind('click', function(){ $(this).addClass('active').siblings().removeClass('active'); }); 2.live()方法(绑定到document DOM节点上.和.bind()的优势是支持动态数据) jQuery 1.3新增的.live()方法代替.bind()方

js和jquery中的事件委托

[转+自己的修改] 概念: 什么是事件委托:通俗的讲,事件就是onclick,onmouseover,onmouseout,等就是事件,委托呢,就是让别人来做,这个事件本来是加在某些元素上的,然而你却加到别人身上来做,完成这个事件. 举个列子:有三个同事预计会在周一收到快递.为签收快递,有两种办法:一是三个人在公司门口等快递:二是委托给前台MM代为签收.现实当中,我们大都采用委托的方案(公司也不会容忍那么多员工站在门口就为了等快递).前台MM收到快递后,她会判断收件人是谁,然后按照收件人的要求签

Jquery事件委托之Safari

什么是事件委托 事件委托是Jquery中一种事件绑定的方式,不同于常见的事件绑定方式将事件绑定在目标元素上,而是将事件绑定在父级元素上通过事件冒泡来执行绑定函数. //常见的事件绑定(Jquery) $(element).click(function(){ //do something }) //事件委托(Jquery) $(parents).on("click",element,function(){ //do something }) 事件委托的原理 事件委托将事件监听绑定在目标元