首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jquery :循环,其中有z索引。

jquery :循环,其中有z索引。
EN

Stack Overflow用户
提问于 2011-04-17 01:36:21
回答 2查看 829关注 0票数 2

在此帖子的后续工作中,我将进行更多的挑战--如何循环只具有z索引的div元素?

css,

代码语言:javascript
复制
#layer-1 { z-index:1; position:absolute; }
#layer-2 { z-index:2; position:absolute; }
#layer-3 { z-index:3; position:absolute; }

html,

代码语言:javascript
复制
<div id="layer-1">layer-1</div>
<div id="layer-2">layer-2</div>
<div id="layer-3">layer-3</div>
<div id="layer-4">layer-4</div>

jquery

代码语言:javascript
复制
var index_highest = 0;

// more effective to have a class for the div you want to search and 
// pass that to your selector
$("div").each(function() {

    // always use a radix when using parseInt
    var index_current = parseInt($(this).css("zIndex"), 10);
    alert(index_current);

    if(index_current > index_highest) {
        index_highest = index_current;
    }
});

这里的jquery代码正在循环每个div元素。当我的根文档中有大量的div时,不是是一个很好的解决方案。因此,我认为,理想情况下,代码可以只循环只具有z索引的div元素,然后忽略div的其余部分。

有可能吗?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-17 01:40:12

我的想法是,您需要循环遍历所有DIVs并测试CSS z索引值,这不会有帮助。没有一种更合适的方法来严格按照该标准选择它们作为子集;此外,如果页面上有任何其他带有z索引的DIVs,它也会选择这些DIVs(如果可以的话)。可能不是个好办法。

如果它们在一起,您应该将它们分组:

代码语言:javascript
复制
<div id="layers">
 <div id="layer-1">layer-1</div>
 <div id="layer-2">layer-2</div>
 <div id="layer-3">layer-3</div>
 <div id="layer-4">layer-4</div>
</div>

$("#layers").each(function() {
    // stuff happens
});

或者将类添加到z索引的DIVs:

代码语言:javascript
复制
<div id="layer-1" class="layer">layer-1</div>
<div id="layer-2" class="layer">layer-2</div>
<div id="layer-3" class="layer">layer-3</div>
<div id="layer-4" class="layer">layer-4</div>

$(".layers").each(function() {
    // stuff happens
});

此外,如果您的ID命名约定如您建议的那样,您也可以使用^选择器

代码语言:javascript
复制
<div id="layer-1">layer-1</div>
<div id="layer-2">layer-2</div>
<div id="layer-3">layer-3</div>
<div id="layer-4">layer-4</div>

$("div[id^=layer-]").each(function() {
    // stuff happens
});

http://jsfiddle.net/MFqNm/

票数 2
EN

Stack Overflow用户

发布于 2011-04-17 01:42:21

无论如何,您的Javascript将必须遍历所有div(尽管Jared说将所有适用的divs分组在一个容器下是一个很好的点),以查看哪些z-index集(因为在我所知道的任何浏览器中都没有原生的CSS属性选择器)。因此,我认为,在没有z索引( z-index,if (!$(this).css('z-index')) continue;)的所有迭代中,只循环遍历所有的continue;和s,不会大大提高性能。

如果您真正关心的是,您可以尝试确定哪些元素将在服务器级别上具有一个z-index,并以编程方式添加一个类。然后,您可以使用jQuery来选择该类的元素。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5690883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档