如何检查元素是否包含指定属性值 混合Liquid与JS的判断失效如何解决
问题排查结果
共有3处问题导致判断失效:
- 选择器语法错误:jQuery属性选择器未闭合,你写的
$(a[class='hidden_wrap'][data-handle='${handle}')缺少对应]`,语法错误直接导致选择器无法正常工作 - 属性值存在冗余字符:a标签的
data-handle属性值末尾带了换行符,实际存储值为copy-of-joory-earrings-tiger-eye-gold\n,和Liquid输出的无换行的product.handle字符串不匹配 - 类名匹配逻辑不合理:使用
[class='hidden_wrap']匹配类名,仅当元素class属性完全等于该字符串时才能命中,存在其他类名、多余空格时都会匹配失败,推荐直接使用类选择器.hidden_wrap
修复方案
- 先删除a标签
data-handle属性值末尾的换行,确保属性值是纯文本无多余空白字符 - 替换JS代码为修正后的版本:
<script> var handle = "{{product.handle}}"; // 可新增trim处理,避免两边多余空格影响匹配 if ($(`a.hidden_wrap[data-handle='${handle.trim()}']`).length > 0) { alert("found"); } else { alert('not found'); } </script>
内容的提问来源于stack exchange,提问作者Sunny
相关产品推荐
相关产品推荐

