iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > html >怎么理解jQuery代码优化的基本事件
  • 469
分享到

怎么理解jQuery代码优化的基本事件

2024-04-02 19:04:59 469人浏览 泡泡鱼
摘要

这篇文章主要介绍“怎么理解Jquery代码优化的基本事件”,在日常操作中,相信很多人在怎么理解jQuery代码优化的基本事件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么

这篇文章主要介绍“怎么理解Jquery代码优化的基本事件”,在日常操作中,相信很多人在怎么理解jQuery代码优化的基本事件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么理解jQuery代码优化的基本事件”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

事件模型

说到事件,就要追溯到网景与微软的“浏览器大战”了。当时,事件模型还没有标准,两家公司的实现就是事实标准。网景在Navigator中实现了“事件捕获”的事件系统,而微软则在IE中实现了一个基本上相反的事件系统,叫做“事件冒泡”。这两种系统的区别在于当事件发生时,相关元素处理(响应)事件的优先权不同。

下面举例说明这两种事件机制的区别。假设文档中有如下结构:

<div>     <span>         <a>...</a>     </span> </div>

因为这三个元素是嵌套的,所以单击了a,实际上也就单击了span和div。换句话说,这三个元素都应该有处理单击事件的机会。在事件捕获机制下,处理这个单击事件的优先次序是:div > span > a;而在事件冒泡机制下,处理这个单击事件的优先次序则是:a > span > div。

后来,W3C的规范要求浏览器同时支持捕获和冒泡机制,并允许开发人员选择把事件注册到哪个阶段。于是就有了下面这个注册事件的标准方法:

target.addEventListener(type, listener, useCapture Optional );

其中:

◆ type:字符串,表示监听的事件类型

◆ listener:监听器对象(javascript函数),在指定事件发生时可以收到通知

◆ useCapture:布尔值,是否注册到捕获阶段

在实际应用开发中,为了确保与IE(因为它不支持捕获)兼容,useCapture一般都指定为false(默认值也是false)。换句话说,只把事件注册到冒泡阶段;对于上面那个简单的例子来说,响应顺序就是:a > span > div。

冒泡的副作用

如前所述,IE的冒泡事件模型基本上成为了事实标准。但冒泡有一个副作用。

仍以前面的文档结构为例,假设它是界面中的一个菜单项,我们希望用户鼠标离开div时隐藏菜单。于是,我们给div注册了一个mouseout事件。如果用户鼠标是从div离开的,那么一切正确。而如果用户鼠标是从a或span离开的,问题就来了。因为由于事件冒泡,从这两个元素开始分派的mouseout事件都会传播到div,从而导致鼠标并没有离开div,菜单就提前隐藏了。

当然,冒泡的副作用不难避免。比如,给div内部的每个元素都注册mouseout事件,并使用.stopPropagation()方法阻止事件进一步传播。对于IE,就得将事件对象的cancelBubble属性设置为false,取消事件冒泡。不过,这仍然回到自己处理浏览器不兼容性问题的老路上了。

优化方案

为了避免冒泡的副作用,jQuery提供了mouseenter和mouseleave事件,就使用它们来代替mouseover和mouseout吧。

下面这个摘自jQuery的内部函数withinElement,就是为mouseenter和mouseleave提供支持的。翻译了一下注释,仅供大家参考。

// 下面这个函数用于检测事件是否发生在另一个元素的内部  // 在 jQuery.event.special.mouseenter 和 mouseleave 处理程序中使用  var withinElement = function( event ) {      // 检测 mouse(over|out) 是否还在相同的父元素内      var parent = event.relatedTarget;       // 设置正确的事件类型      event.type = event.data;       // Firefox 有时候会把 relatedTarget 指定一个 XUL 元素      // 对于这种元素,无法访问其 parentnode 属性      try {           // Chrome 也类似,虽然可以访问 parentNode 属性          // 但结果却是 null          if ( parent && parent !== document && !parent.parentNode ) {              return;          }           // 沿 DOM 树向上          while ( parent && parent !== this ) {              parent = parent.parentNode;          }           if ( parent !== this ) {              // 如果实际正好位于一个非子元素上面,那好,就处理事件              jQuery.event.handle.apply( this, arguments );          }       // 假定已经离开了元素,因为很可能鼠标放在了一个XUL元素上      } catch(e) { }  },

到此,关于“怎么理解jQuery代码优化的基本事件”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: 怎么理解jQuery代码优化的基本事件

本文链接: https://www.lsjlt.com/news/86862.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么理解jQuery代码优化的基本事件
    这篇文章主要介绍“怎么理解jQuery代码优化的基本事件”,在日常操作中,相信很多人在怎么理解jQuery代码优化的基本事件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么...
    99+
    2024-04-02
  • jQuery基本事件代码优化的示例分析
    这篇文章主要介绍了jQuery基本事件代码优化的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。事件模型说到事件,就要追溯到网景与微软...
    99+
    2024-04-02
  • jquery事件代理指的是什么
    这篇文章主要介绍“jquery事件代理指的是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“jquery事件代理指的是什么”文章能帮助大家解决问题。 ...
    99+
    2024-04-02
  • 怎么理解Oracle等待事件的分类、发现及优化
    本篇内容介绍了“怎么理解Oracle等待事件的分类、发现及优化”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成...
    99+
    2024-04-02
  • 基于Eclipse的Flex代码格式化插件怎么用
    小编给大家分享一下基于Eclipse的Flex代码格式化插件怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Flex代码格式化工具在对Flex进行编码的时候,...
    99+
    2023-06-17
  • Java图书管理基本功能代码怎么写
    这篇文章主要介绍“Java图书管理基本功能代码怎么写”,在日常操作中,相信很多人在Java图书管理基本功能代码怎么写问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java图书管理基本功能代码怎么写”的疑惑有所...
    99+
    2023-06-30
  • 怎么编写插件机制优化基于Antd Table封装表格的混乱代码
    本篇内容介绍了“怎么编写插件机制优化基于Antd Table封装表格的混乱代码”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅...
    99+
    2024-04-02
  • jQuery中on绑定的事件怎么解绑
    这篇文章主要介绍了jQuery中on绑定的事件怎么解绑的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇jQuery中on绑定的事件怎么解绑文章都会有所收获,下面我们一起来看看吧。解绑单个事件在jQuery中,我们...
    99+
    2023-07-05
  • SAP MM 对于MRKO事务代码的优化建议是什么
    这篇文章给大家介绍SAP MM 对于MRKO事务代码的优化建议是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。SAP MM 对于MRKO事务代码的几点优化建议SAP公司数十年如一日的一直在对SAP软件系统做升级,从...
    99+
    2023-06-05
  • victoriaMetrics代理性能优化问题怎么解决
    这篇文章主要介绍了victoriaMetrics代理性能优化问题怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇victoriaMetrics代理性能优化问题怎么解决文章都会有所收获,下面我们一起来看看吧...
    99+
    2023-06-29
  • DIV+CSS代码优化方案是怎么样的
    本篇文章给大家分享的是有关DIV+CSS代码优化方案是怎么样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。你对DIV+CSS代码优化的概念是...
    99+
    2024-04-02
  • 怎么用matlab代码解决单目标优化问题
    这篇“怎么用matlab代码解决单目标优化问题”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇...
    99+
    2024-04-02
  • 一段代码理解Python异步函数async的基本用法
    异步函数的使用规则 正常情况下我们的函数时串行的运行的,这里称之为主函数. 异步函数:与主函数并行运行. Python异步函数即async必须在普通函数的命名前加上async 示...
    99+
    2023-09-11
    python Powered by 金山文档
  • 怎么理解MySQL的EVENT事件
    这篇文章主要介绍“怎么理解MySQL的EVENT事件”,在日常操作中,相信很多人在怎么理解MySQL的EVENT事件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么理解My...
    99+
    2024-04-02
  • 怎么解析Java性能优化中的基本类型与引用类型
    这期内容当中小编将会给大家带来有关怎么解析Java性能优化中的基本类型与引用类型,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。★名词定义  先明确一下什么是“基本类型”,什么是“引用类型”。  简单地说,...
    99+
    2023-06-02
  • 日志的语言:理解操作系统事件的秘密代码
    操作系统 (OS) 日志是系统活动记录,提供有关系统操作和事件的宝贵见解。理解这些日志对于系统管理员和开发人员排除故障、提高性能和确保安全至关重要。 OS 日志结构 OS 日志通常包含以下字段: 时间戳:事件发生的时间和日期 事件类型:...
    99+
    2024-04-02
  • jquery touch事件注册不了的问题怎么解决
    今天小编给大家分享一下jquery touch事件注册不了的问题怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。随着移...
    99+
    2023-07-06
  • 理解 Vue 条件渲染的本质,提升代码可读性!
    v-if 指令 v-if 指令用于根据条件显示或隐藏一个元素。如果条件表达式为真,则元素将被显示;否则,元素将被隐藏。语法如下: <div v-if="condition">...</div> v-else 指令 ...
    99+
    2024-04-02
  • vue实现鼠标悬停事件的代码怎么写
    本篇内容介绍了“vue实现鼠标悬停事件的代码怎么写”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!v-bind:title="mes...
    99+
    2023-07-04
  • 怎么理解Redis中的epoll和文件事件
    这篇文章主要讲解了“怎么理解Redis中的epoll和文件事件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么理解Redis中的epoll和文件事件”吧!...
    99+
    2024-04-02
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作