在我的脚本中,我正在寻找DIV
which has class .se
and has style
attribute display: block
,我需要DIV
's ID
。
我的方法是错误的:(
var usedse = $(".se"):has(css('display', 'block')).attr("id");
你能帮我解决这个问题吗?
您可以使用...编写很多自定义逻辑.filter()
。这将找到所有<div class='se'>
并检查它们的 CSSdisplay
属性是否设置为block
,返回id
第一个匹配元素的。
var usedse = $("div.se").filter(function() {
return $(this).css('display') == 'block';
}).attr("id");
您使用的语法错误,请尝试以下简单方法:
if ($("div.se").css('display') == 'block') {
var usedse = $(".se").attr('id');
alert(usedse);
}
我推荐这个:
var usedse = $('.se:visible').attr('id');
if(usedse) alert(usedse);
这可能是实现这一目标的最佳方法:)
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 中设置的元素中获取样式值,您必须使用选择器将它们过滤掉。
您需要确保记住这些是分开的!
所以这是另一个过滤器版本。
$('div.se').filter(function() {
return ( $(this).css('display') == 'block');
});
你有几个选择。
您可以做的一件事是attribute selector
返回所有带有类se
和display
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');
我可以问你为什么这样做吗?我觉得必须有更好的方法来看待这个问题......也许你应该简单地在这个元素上放置一个类(显然,这可能取决于确切的问题)?