You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

筛选子元素特定属性:动态<li>背景色匹配返回undefined问题排查

问题分析与修复方案

嘿,我来帮你揪出问题所在!你的代码里有两个核心问题导致返回undefined:

1. 获取背景色的方式错误

你用了$(this).attr('background-color'),但background-color是CSS样式属性,不属于HTML元素的原生属性(像class、id这类才是元素属性)。要获取元素的计算后样式,得用jQuery的css()方法,而非attr()。

2. RGB格式的空格差异(潜在坑)

不同浏览器返回的RGB字符串格式可能有细微差别:有的会返回rgb(72, 76, 111)(逗号后带空格),有的可能返回rgb(72,76,111)(无空格),直接硬匹配很可能因为格式不一致找不到目标元素。

修复后的代码

var matching = $('.nav_list li').filter(function(){
    // 获取元素背景色,统一去掉所有空格后再做比较
    var bgColor = $(this).css('background-color').replace(/\s/g, '');
    return bgColor === "rgb(72,76,111)";
});

// 先判断是否找到匹配元素,再执行后续操作
if(matching.length > 0){
    alert(matching.attr("class"));
} else {
    alert("没有找到匹配背景色的li元素");
}

额外小建议

如果这个背景色是通过CSS类设置的,其实更推荐直接查找对应类的元素——比通过样式匹配高效得多,比如:$('.nav_list li.your-target-class')。另外,动态生成的元素本身不影响这个逻辑,只要确保代码在元素渲染到DOM之后执行就行(如果是异步加载的元素,要把代码放在元素生成的回调里)。

内容的提问来源于stack exchange,提问作者besthost

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:09:31