jQuery 选择器 - 检查当前 div 属性是不是包含文本?
Posted
技术标签:
【中文标题】jQuery 选择器 - 检查当前 div 属性是不是包含文本?【英文标题】:jQuery Selector - Check if current div attribute contains text?jQuery 选择器 - 检查当前 div 属性是否包含文本? 【发布时间】:2013-03-04 08:26:41 【问题描述】:我的代码正在循环通过一些 div,我试图找到在其样式属性中包含某些文本的那个。这是我最好的尝试,但没有找到。
$("#RootDiv > div").each(function (index)
if ($(this).is("[style~='bg-stripes.gif']"))
alert("found");
);
<div id="RootDiv">
<div style="background-color: White;"></div>
<div style="background-image: url(bg-stripes.gif);"></div>
<div style="background-color: White;"></div></div>
【问题讨论】:
HTML 是什么样的? 特定文本,或任何文本? 你试过if ($(this).attr('style').indexOf('...') > -1 )
吗?
$(this).is("[style*='bg-stripes.gif']")
工作得更好吗? ~=
按整个单词而不是子字符串查找。
@n***s 哎呀,添加了。我不擅长 SO。
【参考方案1】:
尝试改用*=
选择器:
$(this).is("[style*='bg-stripes.gif']")
~=
选择器仅适用于单个单词而不是子字符串。
【讨论】:
【参考方案2】:正如@FelixKling 所说,您不需要使用选择器,我认为在这种特殊情况下使用选择器会更加混乱,您可以简单地尝试:
if ($(this).attr('style').indexOf('bg-stripes.gif') > -1 )
【讨论】:
【参考方案3】:~=
运算符查找以空格分隔的单词,这可能不适合 style
属性。
尝试改用*=
“包含”运算符。您也可以在原始选择器中组合它:
$("#RootDiv > div[style*='bg-stripes.gif']")...
这将准确地为您提供所需的元素,而无需对它们进行迭代并单独使用 .is()
对其进行测试。
【讨论】:
谢谢,这也有效。我确实必须迭代,我只是省略了一些代码来简化我的问题。 @user2174420 当然,所以仍然使用.each
,但忽略if
测试 - 在现代浏览器上,这应该更有效。
好的,我明白你在说什么,但我确实需要遍历所有 div,因为我也在我的代码中使用它们(未显示)。谢谢!
你是只使用匹配元素,还是有其他if
条件匹配其他元素?以上是关于jQuery 选择器 - 检查当前 div 属性是不是包含文本?的主要内容,如果未能解决你的问题,请参考以下文章