Jquery 样式检查和查找元素

发布于 2024-09-08 22:45:45 字数 282 浏览 5 评论 0 原文

在我的脚本中,我正在寻找具有类 .se 并具有 style 属性 display: blockDIV ,我需要 DIVID

我的方法是错误的:(

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

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

In my script i'm looking for the DIV which has class .se and has style attribute display: block, and i need the DIV's ID.

My method is wrong :(

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

Could you help me please to fix this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

千秋岁 2024-09-15 22:45:45

我推荐这个:

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

I'd recommend this:

var usedse = $('.se:visible').attr('id');
    if(usedse) alert(usedse);
花期渐远 2024-09-15 22:45:45

您可以使用 .filter() 编写大量自定义逻辑。这将找到所有

并检查它们的 CSS display 属性是否设置为 block,返回第一个匹配元素的id

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

You can write a lot of custom logic using .filter()... This will find all <div class='se'> and check that their CSS display property is set to block, returning the id of the first matched element.

var usedse = $("div.se").filter(function() { 
   return $(this).css('display') == 'block';
}).attr("id");
三五鸿雁 2024-09-15 22:45:45

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

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

The syntax you are using is wrong, try this simple way instead:

if ($("div.se").css('display') == 'block') {
   var usedse = $(".se").attr('id');
   alert(usedse);
}
傾城如夢未必闌珊 2024-09-15 22:45:45

你有几个选择。

您可以做的一件事是属性选择器,它将返回具有类 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');

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

You have a few options.

One thing you could do is the attribute selector which would return all elements with class se and display css property set:

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

Or, you could use the .css() method and actually check the value of a certain css property:

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

Can I ask why you are doing this though? I feel like there must be a better way to look at the problem... maybe you should simply put a class on this element (obviously, this may not be possible depending on the exact problem)?

笙痞 2024-09-15 22:45:45

这可能是实现此目的的最佳方法:)

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'); 将仅返回值形成实际元素,例如

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

http://jsfiddle.net/4jVC8/

您需要确保记住它们是分开的!

这是另一个过滤器版本。

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

This probably be the best way to accomplish this :)

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

But you would have to think of multiples here, as your using the classes as selectors it usually means theres multiple div elements that your trying to grab, if thats the case, try this way instead

$(".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');
});

Just a side note:
You have to make sure that your selectors are selecting the correct item when it comes down to css, For example

style = $('element').attr('style'); will only return the value form the actual element such as <div style="display:block".

To get the style values from the element that have been set within css you will have to use the selector to filter them out.

http://jsfiddle.net/4jVC8/

You need to make sure you keep in mind that these are separate!

So heres another filter version.

$('div.se').filter(function() {
    return ( $(this).css('display') == 'block');
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文