在前端开发中,我们经常需要通过 DOM 操作来实现一些动态的效果,这时候就需要使用到选择器来获取目标元素。在以往的开发中,我们通常使用 document.querySelector()
和 document.querySelectorAll()
来查找元素,但是它们的功能有些有限,不能实现一些更复杂的操作。而 ES11 新增的可扩展的 $
和 $$
变量则可以实现更快的管道式编程方式,提高开发效率,本文将对此进行详细讲解。
理解管道式编程
管道式编程是一种编程风格,它将一系列操作连接起来,通过数据流动的方式依次处理数据,从而实现目标功能。通常我们使用管道式编程的方式语义更加清晰简洁,也更为灵活和可读性更高。
可扩展的 $
和 $$
变量
在 ES11 中,新增的可扩展的 $
和 $$
变量,它们实际上就是对 document.querySelector()
和 document.querySelectorAll()
的封装,具有更多强大的功能。
使用 $
变量
$
变量是一个封装了 querySelector
的方法,通过 $
变量我们可以轻松地获取到我们要操作的元素,如下所示:
const element = $('#example');
$
变量的最大特点就是它支持对已查找到的元素再次进行操作,以实现更为灵活的功能。例如,我们可以通过 $
变量来获取文本元素 span
的文本内容,并将其转换成大写:
const upText = $('#example span') .textContent .toUpperCase();
使用 $$
变量
$$
变量是一个封装了 querySelectorAll
的方法,通过 $$
变量我们可以轻松地获取到我们想要操作的元素列表,如下所示:
const elements = $$('.example');
和 $
变量一样,$$
变量也支持对已查找到的元素集合再次进行操作,以实现更为灵活的功能。例如,我们可以通过 $$
变量来获取所有 input
元素,并将其销毁:
$$('input') .forEach(input => input.remove());
多重操作
通过 $
和 $$
变量,我们可以实现更加复杂的选择器操作。例如,在下面的例子中,我们首先使用 $
变量来获取 #example
元素,然后使用 $$
变量获取其后代元素中所有包含类 red
的元素,并将它们的文本内容转换成大写:
const elements = $('#example $$.red') .map(element => element.textContent.toUpperCase());
总结
ES11 新增的可扩展的 $
和 $$
变量,不仅增强了选择器的功能,而且为我们提供了更加灵活和高效的操作方式,可以大大提高我们的开发效率。在实际开发中,我们可以结合使用 $
和 $$
变量以及管道式编程的方式,以实现更加高效和灵活的功能。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65377f5e7d4982a6eb0050ce