如何将jQuery选择器与上下文表达式组合存储并复用为单个变量?
解决jQuery选择器+上下文组合复用的问题
哈哈,这个坑我刚学jQuery的时候也踩过!直接写var selector = '.some-element', '.within-context'根本行不通——这在JavaScript里是错误语法,逗号在这里是变量声明的分隔符,相当于你只声明了selector = '.some-element',后面的.within-context连变量名都没有,自然没法用。
给你几个实用的方案,按需选择:
分别存储选择器和上下文变量
这是最直接也最容易维护的方式,把两个值分开存成独立变量,用的时候直接传给jQuery函数:// 提前定义好两个变量 var targetSelector = '.some-element'; var contextSelector = '.within-context'; // 复用的时候直接传入 $(targetSelector, contextSelector).addClass('highlight'); $(targetSelector, contextSelector).fadeIn();以后要修改选择器或者上下文,只需要改开头的变量值就行,不用在代码里到处找。
封装成复用函数(适合频繁调用)
如果这个选择器组合你要在很多地方用,甚至还要附加一些固定操作,可以把它封装成一个小函数:// 封装获取目标元素的函数 function getTargetElements() { return $('.some-element', '.within-context'); } // 调用的时候直接用函数返回的jQuery对象 getTargetElements().hide(); getTargetElements().on('click', function() { // 点击逻辑 });这种方式的好处是,后续如果要调整选择器、上下文,甚至加个过滤条件,只需要修改函数内部,所有调用的地方都会自动生效。
用数组/对象结构化存储(适合多组合管理)
如果你有好几个类似的“选择器+上下文”组合需要管理,可以用数组或者对象把它们打包:
数组方式(ES6+支持展开运算符):var targetWithContext = ['.some-element', '.within-context']; // 展开数组传入jQuery $(...targetWithContext).doSomething(); // 老版本jQuery/不支持ES6的话,用apply $.fn.apply($, targetWithContext).doSomething();对象方式(结构更清晰,可读性更高):
var elementConfig = { target: '.some-element', context: '.within-context' }; // 使用的时候直接取对象属性 $(elementConfig.target, elementConfig.context).doSomething();这种方式适合项目里有多个类似的元素选择组合,统一管理起来更方便。
内容的提问来源于stack exchange,提问作者Daniel Thompson
相关产品推荐
相关产品推荐

