0

在我的脚本中,我正在寻找DIVwhich has class .seand has styleattribute display: block,我需要DIV's ID

我的方法是错误的:(

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

你能帮我解决这个问题吗?

4

5 回答 5

2

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

var usedse = $("div.se").filter(function() { 
   return $(this).css('display') == 'block';
}).attr("id");
于 2010-07-09T08:08:45.830 回答
1

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

if ($("div.se").css('display') == 'block') {
   var usedse = $(".se").attr('id');
   alert(usedse);
}
于 2010-07-09T07:59:02.363 回答
1

我推荐这个:

var usedse = $('.se:visible').attr('id');
    if(usedse) alert(usedse);
于 2010-07-09T08:02:04.220 回答
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');
});
于 2010-07-09T08:04:37.420 回答
1

你有几个选择。

您可以做的一件事是attribute selector返回所有带有类sedisplaycss 属性集的元素:

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

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

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

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

于 2010-07-09T08:09:27.847 回答