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");
);

html

<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('...') &gt; -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 属性是不是包含文本?的主要内容,如果未能解决你的问题,请参考以下文章

如何用jquery实现点击div更换class?

jQuery 检查相邻选择器

jQuery选择器

Jquery 选择器:属性值以开头和结尾

jQuery-过滤选择器二

jquery的基础知识复习(基础选择器,属性选择器,层级选择器)