jQuery中有样式选择器吗?

Alo*_*kin 15 html css jquery

如果我想选择它的alt是Home的每个图像,我可以这样做:

$("img[alt='Home']")
Run Code Online (Sandbox Code Playgroud)

但是,如何width在单个选择器中选择其CSS属性为750px的每个元素?

编辑:如果没有这样的选择器,是否有任何插件,或任何计划在下一个jQuery版本中执行它?

Jon*_*her 17

不一定是个好主意,但你可以为它添加一个新的Sizzle选择器:

$.expr[':'].width = function(elem, pos, match) {
    return $(elem).width() == parseInt(match[3]);
}
Run Code Online (Sandbox Code Playgroud)

你可以这样使用它:

$('div:width(970)')
Run Code Online (Sandbox Code Playgroud)

然而,这将是非常缓慢的,所以你想要缩小与之比较的元素数量:

$('#navbar>div:width(970)')
Run Code Online (Sandbox Code Playgroud)

只选择那些作为导航栏直接后代的div,它们的宽度也是970px.


kar*_*m79 15

var $images = $("img").filter(function() {
    return $(this).css('width') == '750px';
});
Run Code Online (Sandbox Code Playgroud)

编辑:没有我知道的插件,或任何包含此类特定功能的计划.您可以自己轻松地对其进行插件化,例如(未经测试):

$.fn.filterByWidth = function(width) {
    var $images = $("img").filter(function() {
        return $(this).css('width') == width;
    });
    return $images;
};
Run Code Online (Sandbox Code Playgroud)

用法:

$images = $('#div img').filterByWidth('750px');
$images = $('#div img').filterByWidth('50%');
...etc...
Run Code Online (Sandbox Code Playgroud)

  • @josh问题专门要求css声明宽度而已 (3认同)

Pow*_*ord 5

我不知道这是否有效,但......:

${"[style*=width: 750px]")
Run Code Online (Sandbox Code Playgroud)

但是,最好使用类来控制宽度,然后修改该类的所有实例的宽度......或者更改为其他类:

$(".classname").removeClass("classname").addClass("otherclassname");
Run Code Online (Sandbox Code Playgroud)