【问题标题】:How to find an element by style attribute?如何通过样式属性查找元素?
【发布时间】:2013-11-03 19:17:21
【问题描述】:

我无法按样式属性检索元素。 我有一个带有几个li 元素的ul,我想找到一个样式属性值为display:list-item 的元素。我曾尝试以多种方式解决此问题,包括以下方法,但我一直得到一个空对象。我对标题属性没有问题。不知道我做错了什么。

$('li[style*=display:list-item]')

HTML:

<ul class="bjqs" style="height: 200px; width: 100%;">
    <li class="bjqs-slide" style="height: 200px; width: 100%; display: list-item;">

【问题讨论】:

  • 这似乎是个坏主意。你确定有必要吗?为什么你不能直接得到.bjqs-slide
  • 我有几个 .bjqs-slide li 元素,我想对具有此属性的元素做一些事情。

标签: jquery css jquery-selectors


【解决方案1】:

您的选择器对空格敏感,因为您的属性中有空格,您的选择器中也需要它:

$('li[style*="display: list-item"]')

如果您要根据特定的 CSS 属性过滤元素,那么减少精确匹配字符串问题的最简单方法是使用 filter():

$('li').filter(function(){
    return $(this).css('display') === 'list-item';
});

参考资料:

【讨论】:

    【解决方案2】:

    两个问题:

    1. 在您的 HTML 中,“display:”和“list-item”之间有一个空格。
    2. 您的选择器需要用引号 "" 括起来。

    只需更改您的选择器以包含此空间并将其用引号括起来:

    $('li[style*="display: list-item"]')
    

    JSFiddle demo.

    【讨论】:

    • 我还注意到,在它被插件创建之前,我正在搜索这个元素,我相信这加剧了我的问题。当我按照您的建议包含空白并将其向下移动几行时,成功。谢谢。
    • @user2232681 乐于助人! :)
    • 如果list-item 是一个变量怎么办?
    猜你喜欢
    • 2012-07-08
    • 1970-01-01
    • 1970-01-01
    • 2020-01-01
    • 2020-10-30
    • 2012-06-01
    • 2016-03-25
    • 1970-01-01
    • 2016-04-03
    相关资源
    最近更新 更多