样式上的属性选择器不起作用

时间:2012-10-23 09:29:49

标签: jquery

我要在“para”类中找到目前可见的div。 我试过了:

 $('.para div[style="display: block;"]').attr("id")

但它不起作用。

我还在js小提琴上写了一个例子 - > http://jsfiddle.net/JZFgp/3/

我很感谢任何提示和解决方案。

马里奥

3 个答案:

答案 0 :(得分:5)

这样可以正常工作,但你的标记在小提琴中是无效的。这是一个fixed version

<table> <!-- You didn't have a `table` or `tr` element -->
    <tr>
        <td class="para">
            <div id="TripSet" class="rounded-corner-region" style="display: none;">
            <div id="DriverSet" class="rounded-corner-region" style="display: none;">
            <div id="TimeSet" class="rounded-corner-region" style="display: block;">
            <div id="Loading" class="borderless-region" style="display: none;">
        </td>
    </tr>
</table>​

如果没有tabletr元素,浏览器会尽力解释您的标记,最后只删除td(至少在Chrome中),这意味着{{ 1}}部分选择器无法再匹配。


修改

看起来Chrome(很可能是其他人,但我没有经过测试)很高兴您省略.para元素,只要有tr元素。它会自动在table元素周围添加tbodytr

答案 1 :(得分:1)

$('.para div:visible').attr("id")应该有用。

答案 2 :(得分:0)

您无法在选择器中可靠地使用style属性。有些浏览器会保持属性值不变,而其他浏览器会将值标准化。

例如,在IE8中,阅读属性值会为您提供"display: block"而不是"display: block;",但您无法使用[style="display: block"](或[style="display: block;"])的选择器找到元素。