Jquery样式检查和查找元素

时间:2010-07-09 07:56:48

标签: jquery css attr

在我的脚本中,我正在寻找DIV,其中包含.se类,style属性display: block,我需要DIV ID

我的方法错了:(

var usedse = $(".se"):has(css('display', 'block')).attr("id");

你可以帮我解决这个问题吗?

5 个答案:

答案 0 :(得分:2)

您可以使用.filter()编写大量自定义逻辑...这将找到所有<div class='se'>并检查其CSS display属性是否设置为block,并返回第一个匹配元素的id

var usedse = $("div.se").filter(function() { 
   return $(this).css('display') == 'block';
}).attr("id");

答案 1 :(得分:1)

您使用的语法错误,请尝试这种简单的方法:

if ($("div.se").css('display') == 'block') {
   var usedse = $(".se").attr('id');
   alert(usedse);
}

答案 2 :(得分:1)

我推荐这个:

var usedse = $('.se:visible').attr('id');
    if(usedse) alert(usedse);

答案 3 :(得分:1)

这可能是实现这一目标的最佳方式:)

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

但你必须在这里考虑倍数,因为你使用类作为选择器它通常意味着你试图抓住的多个div元素,如果是这样的话,请尝试这种方式

$(".se[style*='display:block']").each(function(){
    //Here you can do what you want to each element
    // use `this` as a selector, for example
    id = this.attr('id');
});

只是旁注: 您必须确保选择器在css时选择正确的项目,例如

style = $('element').attr('style');只会返回<div style="display:block"等实际元素的值。

要从css中设置的元素中获取样式值,您必须使用选择器将其过滤掉。

http://jsfiddle.net/4jVC8/

你需要确保记住这些是分开的!

所以这是另一个过滤器版本。

$('div.se').filter(function() {
    return ( $(this).css('display') == 'block');
});

答案 4 :(得分:1)

您有几个选择。

您可以做的一件事是attribute selector,它会返回所有带有类sedisplay css属性集的元素:

$(".se [style*='display']").attr('id');

或者,您可以使用.css()方法并实际检查某个css属性的值:

var $possibles = $(".se"), id;
for ($el in $possibles)
    if ($el.css('display') === 'block') id = $el.attr('id');

我可以问你为什么要这样做吗?我觉得必须有一个更好的方法来看待问题...也许你应该简单地在这个元素上放一个类(很明显,这可能不可能取决于确切的问题)?