【问题标题】: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']") 工作得更好吗? ~= 按整个单词而不是子字符串查找。
  • @nbrooks 哎呀,添加了。我不擅长 SO。

标签: jquery jquery-selectors attributes


【解决方案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条件匹配其他元素?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-07
      • 1970-01-01
      • 1970-01-01
      • 2016-01-20
      • 2011-03-04
      相关资源
      最近更新 更多