jQuery选择器 - 样式值

时间:2010-03-29 10:03:10

标签: javascript jquery css-selectors

我有一系列像这样的div:

<div class="message" style="padding-left: 0px;">...</div>
<div class="message" style="padding-left: 20px;">...</div>
<div class="message" style="padding-left: 20px;">...</div>
<div class="message" style="padding-left: 40px;">...</div>
<div class="message" style="padding-left: 20px;">...</div>

我想制作一个选择器,可以让我的填充大于20px的div。

只使用jquery会有可能吗?或者我应该修改我的html树并添加一些属性来区分那些具有高填充值的元素?

4 个答案:

答案 0 :(得分:4)

您可以将filter与自定义功能配合使用。

$('div.message').filter(function(){
     return parseInt($(this).css('padding-left')) > 20;
});

P.S。我不确定.css('padding') > 20会返回什么,我猜我需要测试它....

答案 1 :(得分:1)

您可以使用 filter

var elems = $('div.message').filter(function (){
               return parseInt($(this).css("padding-left"),10) > 20;
            });

alert ( elems.length );

或使用每个你可以做这样的事情

$(function(){
    var elems = new Array();
    $("div.message").each(function(){
        if(parseInt($(this).css("paddingLeft"), 10) > 20 )
        {
            elems.push($(this));
        }           
    });

    alert ( elems.length );
});

答案 2 :(得分:1)

您可以使用$('.message')选择器,然后loop通过您的元素找到.css padding-left设置为您想要的任何内容。

第二个解决方案涉及custom selectors的使用。

您可以修改我从博客中获取的代码:

$.extend($.expr[':'], {
    redOrBlue: function(o) {
        return ($(o).css("color") == "red") 
               || ($(o).css("color") == "blue");
    }
});

用法:

$('div:redOrBlue')

答案 3 :(得分:0)

您可以使用filter()

var col = $('div').filter(function ()
{
    return parseInt($(this).css("padding-left")) > 20;
});

或者您可以创建自己的选择器:

$.expr[':'].myselector = function(obj, index, meta, stack){
   return parseInt($(obj).css("padding-left")) > 20;
};
var col = $("div:myselector");