jQuery如何匹配包含全部指定类名的单个元素
实现方案
你当前写法的核心问题是:直接将空格分隔的类名字符串传入find方法时,jQuery会将其解析为后代选择器,而非匹配单个元素同时包含所有类的选择器,并非是类匹配采用OR逻辑。
要实现匹配全部类名的AND逻辑,只需要对传入的类名字符串做简单格式转换即可,将空格替换为.并在开头追加.,就能生成符合要求的多类并列选择器:
callMe = function(str) { // 支持自动去除首尾空格、类名之间多空格的兼容处理 const classSelector = '.' + str.trim().replace(/\s+/g, '.'); return $node.find(classSelector); }
调用callMe('element content stop')时,函数会自动生成选择器.element.content.stop,该选择器的匹配规则就是要求元素同时包含element、content、stop三个类,完全符合你的需求,可正确返回对应的stop span元素。
内容的提问来源于stack exchange,提问作者NastyDiaper
相关产品推荐
相关产品推荐

