分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

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

发布时间:2023-09-06 01:49责任编辑:董明明关键词:jQuery

  首先什么是事件委托,一般我们设置事件监听的时候都是在需要触发事件的节点上设置。假设一个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方法。

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

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

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved