Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 当存在大量已定位的嵌套元素时,如何将绝对位置设置为特定的div元素_Jquery_Css_Css Position - Fatal编程技术网

Jquery 当存在大量已定位的嵌套元素时,如何将绝对位置设置为特定的div元素

Jquery 当存在大量已定位的嵌套元素时,如何将绝对位置设置为特定的div元素,jquery,css,css-position,Jquery,Css,Css Position,我有以下html: <div> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip

我有以下html:

<div>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
    tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
    quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
    consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
    cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
    proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</div>
<div id="reference" class="group">
    <h1 class="resizeme">hello world</h1>
    <div class="resizeme">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
    tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
    quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
    consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
    cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
    proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

    <p class="resizeme" style="background:red;">hello there I am another text</p>

    </div>
</div>
这就是它的样子(请注意红色段落“底部”是如何放置在灰色DIV中的):

我想使用jQuery将div#reference设置为position:relative;和所有其他HTML中的#参考
位置:绝对
相对于该#参考

我试过这个(但它打破了设计):

我试过这个(也打破了设计):

我如何解决这个问题?

//javascript变量应在顶部声明。
变量$ref=$(“#引用”);//为了性能效益http://jsperf.com/jquery-vs-fasterjquery
//单线
$ref.css(“位置”、“相对”);
var$allNestedElements=$ref.find(“*”);
$allNestedElements.css(“位置”、“绝对”);//为了性能效益http://jsperf.com/jquery-vs-fasterjquery
.resizeme{
背景:灰色;
填充:6px;
}
身体{
位置:相对位置;
保证金:0;
填充:0;
}
#参考文献{
背景:橙色;
}
.小组:之前,
.小组:之后{
内容:“;
显示:表格;
}
.小组:之后{
明确:两者皆有;
}
.组{
缩放:1;
/*对于IE 6/7(触发器布局)*/
}

知识产权是一种权利,是一种精英的权利,是劳动和财富的暂时性权利。但是,在最低限度上,我们需要一个实验室来进行日常工作。酒后驾车
这是一种不受欢迎的行为,它是一种不受欢迎的行为。除偶尔因疏忽而死亡外,不得因疏忽而导致动物死亡

你好,世界 知识产权是一种权利,是一种精英的权利,是劳动和财富的暂时性权利。但是,在最低限度上,我们需要一个实验室来进行日常工作。酒后驾车 这是一种不受欢迎的行为,它是一种不受欢迎的行为。除偶尔因疏忽而死亡外,不得因疏忽而导致动物死亡。 你好,这里是另一条短信


为什么不直接使用CSS?下面是一个在CSS中执行此操作的应用程序,它具有相同的布局:

.resizeme{
背景:灰色;
填充:6px;
}
html,正文{
保证金:0;
填充:0;
}
#参考文献{
位置:相对位置;
背景:橙色;
}
.group:之前,.group:之后{
内容:“;
显示:表格;
}
.小组:之后{
明确:两者皆有;
}
.组{
缩放:1;
/*对于IE 6/7(触发器布局)*/
}
#参考>.resizeme{
位置:绝对;/*此行给出了#参考绝对位置的子项*/
}
#参考>h1.resizeme{
显示:内联块;
宽度:100%;
利润上限:21px;
填充:6px 0px;
}
#参考>h1。树脂化:之前{
内容:“;
位置:绝对位置;
顶部:-21px;
高度:21px;
宽度:100%;
背景:橙色;
}
#参考>h1。树脂化:之后{
内容:“;
位置:绝对位置;
显示:块;
底部:-21px;
高度:21px;
宽度:100%;
背景:橙色;
}
#参考>div.resizeme{
顶部:92px!重要;
}

知识产权是一种权利,是一种精英的权利,是劳动和财富的暂时性权利。但是,在最低限度上,我们需要一个实验室来进行日常工作。两人或两人在一个无教区的房间里互相指责。除偶尔因疏忽而死亡外,不得因疏忽而导致动物死亡

你好,世界 知识产权是一种权利,是一种精英的权利,是劳动和财富的暂时性权利。但是,在最低限度上,我们需要一个实验室来进行日常工作。两人或两人在一个无教区的房间里互相指责。除偶尔因疏忽而死亡外,不得因疏忽而导致动物死亡。 你好,这里是另一条短信


简单,您可以将它们展开,这样它们就不再嵌套了?
$(“#reference*”).appendTo(“#reference”)
@adeneo我如何将其组合以获得上一个位置,然后将
位置:绝对
添加到这些div中,使它们仍然像我没有触摸它们一样。我不知道当div都是彼此的子对象,并且每个div都有
位置时,您是否可以这样做。您可能需要让所有div都是
@TylerH的直接后代。我更新了我的问题!你认为我可以在不破坏设计的情况下将所有元素移动到#参考并定位每个元素吗?这似乎无法保持布局。“Hello World”和橙色背景都没有显示在堆栈片段中。不幸的是,我需要使用jQuery,因为初始css文件不是我写的,所以我需要转换所有内容dynamically@medBo你不能添加新的CSS文件吗?这确实不是JavaScript的好候选。
      .resizeme{
            background: gray;
            padding: 6px;
        }

        body{
            position: relative;
            margin: 0;
            padding: 0;
        }

        #reference{
            background: orange;

        }

        .group:before,
        .group:after {
            content: "";
            display: table;
        } 
        .group:after {
            clear: both;
        }
        .group {
            zoom: 1; /* For IE 6/7 (trigger hasLayout) */
        }
$("#reference").css("position", "relative");
$("#reference *").css("position", "absolute");
$('#reference *').appendTo('#reference');