如何将与data-date属性值不匹配的元素类保存到变量中?
解决方案:提取不匹配的类
嘿,我明白你要做的事了——从path的class列表里,找出和按钮data-date值不匹配的那个类,对吧?这其实不难,我们可以通过拆分class字符串、过滤匹配项来实现。
具体实现步骤
- 把
path的class属性值拆分成数组(因为class是用空格分隔的多个值); - 过滤掉和
data-date值匹配的类; - 剩下的就是你要保存的不匹配类。
完整代码示例
替换你代码里注释的部分,最终的JS代码如下:
$("button").on("click", function() { var pathClass = $("path").attr("class"); var curClass = $(this).attr("data-date"); // 核心逻辑:提取不匹配的类 if($(this).hasClass(curClass)) { // 1. 将class字符串拆分成数组(兼容多个空格的情况) const pathClassList = pathClass.split(/\s+/); // 2. 过滤掉和curClass匹配的类,取第一个不匹配的项 // 担心大小写不一致的话,可以加.toLowerCase()统一比较 const unmatchedClass = pathClassList.filter(cls => cls.toLowerCase() !== curClass.toLowerCase())[0]; // 现在unmatchedClass就是你要的类啦,你的例子里会返回"bye" console.log(unmatchedClass); } });
额外说明
- 如果
path有多个不匹配的类(比如class是hello bye test,data-date是hello),filter会返回所有不匹配的类组成的数组,你可以根据需求选择取第一个([0])或者保存整个数组; - 使用
split(/\s+/)而非split(' '),是为了处理class之间有多个空格的情况,逻辑更健壮; - 若你能确定class和data-date的大小写完全一致,可以去掉
toLowerCase()这部分。
内容的提问来源于stack exchange,提问作者downFast
相关产品推荐
相关产品推荐

