浅谈事件冒泡、事件委托、jQuery元素节点操作、滚轮事件与函数节流

浅谈事件冒泡

当一个元素上触发一个事件(比如鼠标点击),该事件会从该元素开始向上冒泡,直到传到文档的根节点。因此,如果父元素和子元素都定义了同一个事件处理程序,这个事件会先被触发在子元素上,然后再在父元素上触发。

<div id="parent">
  <div id="child"></div>
</div>

<script>
  document.getElementById('parent').addEventListener('click', function(event) {
    console.log('parent clicked');
  });

  document.getElementById('child').addEventListener('click', function(event) {
    console.log('child clicked');
  });
</script>

在上面的例子中,当点击子元素时,控制台会依次输出"child clicked"和"parent clicked"。

浅谈事件委托

事件委托利用了事件冒泡的原理,将本该直接添加到子元素中的事件监听器,添加到其父元素上。这样父元素就可以处理在它内部的所有子元素的事件了,从而减少了事件处理器的数量。

以添加按钮为例,如果一个页面上有多个按钮需要被点击,我们可以为每个按钮添加事件监听器,但这样就会导致事件处理器的数量呈指数级增长。更好的做法是为父元素添加一个事件监听器,然后根据点击事件传播到的目标来判断应该执行何种操作。

<ul id="list">
  <li><button>Delete Item 1</button></li>
  <li><button>Delete Item 2</button></li>
  <li><button>Delete Item 3</button></li>
</ul>

<script>
  document.getElementById('list').addEventListener('click', function(event) {
    if (event.target.tagName === 'BUTTON') {
      console.log('Button clicked, delete item');
    }
  });
</script>

在上面的例子中,我们为ul元素添加了一个click事件监听器,然后判断点击事件传播到的元素是否为button元素。如果是,则执行删除操作。

jQuery元素节点操作

jQuery是一个非常流行的JavaScript库,它封装了许多常用的DOM操作方法。以下是一些常用的jQuery元素节点操作方法:

  • $(selector) - jQuery选择器,用于选取页面中的元素。
  • html() - 获取/设置元素的HTML内容。
  • text() - 获取/设置元素的文本内容。
  • val() - 获取/设置元素的文本框的值。
  • attr() - 获取/设置元素的属性。
  • addClass() - 添加元素的class。
  • removeClass() - 移除元素的class。
  • toggleClass() - 如果存在指定的class,则从元素中删除该class;如果不存在,则添加该class。

以下是一个使用jQuery添加/删除class的例子:

<p id="paragraph">This is a paragraph.</p>

<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>

<script>
  $('#paragraph').addClass('bold');

  setTimeout(function() {
    $('#paragraph').removeClass('bold');
  }, 3000);
</script>

在上面的例子中,我们使用$('#paragraph').addClass('bold')方法为p元素添加了一个bold类。3秒钟后,我们使用$('#paragraph').removeClass('bold')方法将bold类从p元素中移除。

滚轮事件

滚轮事件是在鼠标滚轮滚动时触发的事件。可以使用原生JavaScript或jQuery来处理滚轮事件。

以下是一个原生JavaScript处理滚轮事件的例子:

<div id="container">
  <h1>Scroll Me!</h1>
  <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec id rhoncus nibh. Nullam quis ante vel eros lacinia sagittis eget sit amet elit. Sed tristique quam sit amet elit elementum rhoncus. Proin pellentesque quam vel sem eleifend dictum. Sed ultricies massa vel felis sodales, vel venenatis ligula efficitur. Maecenas bibendum vulputate turpis in iaculis.</p>
</div>

<script>
  var container = document.getElementById('container');

  container.addEventListener('wheel', function(event) {
    if (event.deltaY > 0) {
      console.log('Scrolled down');
    } else {
      console.log('Scrolled up');
    }

    event.preventDefault();
  });
</script>

在上面的例子中,我们为一个div元素添加了滚轮事件监听器,然后通过deltaY判断滚轮滚动的方向是向上还是向下。

函数节流

函数节流是指在一段时间内多次调用一个函数时,只有在过了一定时间后才会实际调用。这样可以减少函数调用次数,从而提高性能和响应速度。

以下是一个使用原生JavaScript实现函数节流的例子:

<button id="button">Click me!</button>

<script>
  function throttle(func, wait) {
    var timer = null;

    return function() {
      if (!timer) {
        timer = setTimeout(function() {
          func.apply(this, arguments);
          timer = null;
        }, wait);
      }
    }
  }

  var button = document.getElementById('button');

  button.addEventListener('click', throttle(function() {
    console.log('Clicked the button');
  }, 1000));
</script>

在上面的例子中,使用了一个throttle函数来实现函数节流。该函数会返回一个新的函数,用来代替原函数。在这个新函数中,我们使用了setTimeout来实现延迟调用。如果在延迟时间内再次调用了这个新函数,它会被忽略,直到上一次调用完成,并重新开始计时。

以上就是对于事件冒泡、事件委托、jQuery元素节点操作、滚轮事件和函数节流的简要讲解和示例,可以帮助您更好地理解和使用它们。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈事件冒泡、事件委托、jQuery元素节点操作、滚轮事件与函数节流 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • jQuery代码优化 遍历篇

    针对“jQuery代码优化 遍历篇”的完整攻略,我将分为以下几个部分进行讲解: 为什么需要jQuery代码优化? 遍历的常见问题 jQuery代码优化的技巧和方法 示例说明 1. 为什么需要jQuery代码优化? 在开发中,jQuery是一个非常常用的库,它为我们提供了很多方便快捷的API。但是,在使用jQuery的过程中,我们有时会写出很冗长的代码,这不仅…

    jquery 2023年5月28日
    00
  • Jquery把获取到的input值转换成json

    获取到的input值转换成JSON,可以通过jQuery的serializeArray()方法将表单序列化成一个数组或者通过jQuery的serialize()方法将表单序列化成一个URL编码的字符串,再使用JSON.stringify()方法将数据转化为字符串格式的JSON数据。 下面分别对这两个方法进行详细讲解。 1. 使用serializeArray(…

    jquery 2023年5月28日
    00
  • jquery UI Datepicker时间控件的使用及问题解决

    以下是详细讲解“jquery UI Datepicker时间控件的使用及问题解决”的完整攻略。 什么是jquery UI Datepicker时间控件 jquery UI Datepicker 时间控件是jquery UI中的一款强大的时间选择器控件。可以用来选择日期、时间等,具有智能化响应、语言本地化、主题皮肤、自定义格式等功能。 jquery UI Da…

    jquery 2023年5月28日
    00
  • jQuery UI Spinner stepDown()方法

    以下是关于 jQuery UI Spinner stepDown() 方法的详细攻略: jQuery UI Spinner stepDown() 方法 stepDown() 方法使 Spinner 控件的值减少一个步长。可以使用该方法来控制 Spinner 控件的值。 语法 $(selector).spinner("stepDown", …

    jquery 2023年5月11日
    00
  • jQWidgets jqxDropDownList focus()方法

    jQWidgets jqxDropDownList focus()方法详解 jQWidgets是一个基于jQuery的UI组件库,提供了丰富UI组件和工具包。jqxDropDownList是组件的组。本文将详细介绍jqxDropDownList的focus()方法,包括用法、语法和示例。 focus()方法的基本语法 focus()方法的基本语法如下: $(…

    jquery 2023年5月10日
    00
  • jQuery隐藏、显示、切换和渐变的方法与实例

    让我来详细讲解jQuery隐藏、显示、切换和渐变的方法与实例。 一、jQuery隐藏、显示、切换和渐变的方法 jQuery中提供了多种方法来实现隐藏、显示、切换和渐变的效果,下面我们来一一介绍: 1.1 隐藏和显示 要隐藏一个元素,可以使用以下两种方法: 1.1.1 方法一 $(selector).hide(); 这种方法会将匹配的元素隐藏起来,且元素所占用…

    jquery 2023年5月12日
    00
  • BootStrap与validator 使用笔记(JAVA SpringMVC实现)

    我来详细讲解一下“BootStrap与validator 使用笔记(JAVA SpringMVC实现)”的完整攻略。 一、什么是 Bootstrap? Bootstrap是Twitter开发的一个前端框架,它提供了一系列已经设计好的UI元素和组件,可以让开发者快速搭建漂亮的响应式网站或Web应用,同时也是目前最流行的前端框架之一。 二、什么是 Validat…

    jquery 2023年5月18日
    00
  • Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解

    下面是“Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解”的完整攻略: 1. 概述 Jquery中有多种绑定事件的方法,包括.bind()、.live()、.delegate()和.on()。它们在使用方式和特性上有所不同,在实际开发中我们需要根据需求选择合适的方法。下面就详细讲解这几种方法的区别和使用场景。 2…

    jquery 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部