使用jQuery选择具有特定CSS的元素

10

我正在尝试向所有设置了position:fixed的元素添加一些jQuery代码。这种操作是否可行?如果可以的话会很有帮助,这样我就不必逐个地在我的代码中为固定的对象添加额外的类了。

3个回答

24

这个应该涵盖所有情况:

$('*').filter(function() {
    return $(this).css("position") === 'fixed';
});

不如qwertymk的答案快,但如果CSS属性从另一个规则继承,则也可以正常工作,这在此处演示。


我正要发布完全相同的代码,因为我在研究他的代码时遇到了它,并且像你一样做了同样的事情,它起作用了。非常完美,非常感谢。 - Brian Leishman
1
比我的答案更好。+1 - Colin Brock

4
比Colin的答案更快、更安全:
$('*').filter(function(){ return this.style && this.style.position === 'fixed'; });

更多关于 jQuery filter() 的内容


3
只是好奇想知道当分别写下 this.stylethis.style.position==='fixed' 时会返回什么? - HalfWebDev
4
@MegaRacer,这是一种保护性检查。如果this.styleundefined,则this.style.position将会抛出一个错误“Cannot read property position of undefined”。由于编译器从左到右进行检查,如果this.style === undefined,它将在&&之前失败,而不会导致错误。 - Dave Mackintosh

1
如果您只是检查display:none和其他display属性,您可以在通常的jQuery选择器中使用CSS选择器:visible,如下所示:
$('.items:visible')

或者选择隐藏元素:
$('.items:hidden')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接