选择的所有要素,有一个具体的CSS,使用jQuery
-
10-07-2019 - |
题
我怎么可以选择的所有要素,有一个特定的属性应用,使用jQuery?例如:
.Title
{
color:red;
rounded:true;
}
.Caption
{
color:black;
rounded:true;
}
如何选择由财产命名为"圆"?
CSS类的名字是非常灵活。
$(".Title").corner();
$(".Caption").corner();
如何以替代这两个操作一项动作。也许事情是这样的:
$(".*->rounded").corner();
是否有更好的方式来做到这个吗?
解决方案
可以不(使用CSS选择)选择元素基于已经被应用到他们的CSS属性。
如果您要手动做到这一点,你可以在他们选择文档中的每一个元素,循环,并检查你感兴趣的属性的计算值(这将可能只与真正的CSS属性的工作,虽然,没有取得向上的如rounded
)。这也将是缓慢的。
更新响应于编辑 - 组选择的:
$(".Title, .Caption").corner();
其他提示
这是一个两岁的线程,但它仍然是有用的我,所以它可能是有用的人,也许。下面是我落得这样做:
var x = $('.myselector').filter(function () {
return this.style.some_prop == 'whatever'
});
不简明扼要,我想,但我从来没有需要这样的事情,除了现在,这不是一般使用非常有效反正我看到了。
感谢您,珠宝。我用您的解决方案,但使用了jQuery的CSS代替纯javascript,如下所示:
var x = $('*').filter(function() {
return $(this).css('font-family').toLowerCase().indexOf('futura') > -1
})
这个例子将选择其中font-family
属性值包含“富利”的元素。
类似的宝石。只是一点点增强:
$('[class]').filter(function() {
return $(this).css('your css property') == 'the expected value';
}
).corner();
我认为使用$('[class]')更好:
- 没有必要硬代码的选择(s)
- 不检查所有HTML要素之一。
这里是一个 例.
这里是干净的,很容易理解的解决方案:
// find elements with jQuery with a specific CSS, then execute an action
$('.dom-class').each(function(index, el) {
if ($(this).css('property') == 'value') {
$(this).doThingsHere();
}
});
这种解决方案是不同的,因为它不使用角、过滤器或返回。这是有意作出更广泛的用户。
事情更换:
- 替换"。dom-类"与你的选择。
- 取代属性和价值与你在找什么。
- 替换"doThingsHere()"与你想要什么,以执行, 发现元素。
定制CSS特性不继承的,因此必须直接施加到每个元件(即使用js动态地添加属性,则应该通过添加一类这样做),所以...
CSS
.Title
{
color:red;
}
.Caption
{
color:black;
}
HTML
您不需要定义一个圆形的:在所有真正的财产。只要使用“圆角”类的存在:
<div class='Title Rounded'><h1>Title</h1></div>
<div class='Caption Rounded'>Caption</div>
JS
jQuery( '.Rounded' ).corner();
不隶属于 StackOverflow