使用 jQuery offset() 将绝对定位的 DIV 设置为另一个 DIV 的相同 y 坐标
Setting absolute positioned DIV to the same y-coordinate of another DIV using jQuery offset()
我似乎无法在互联网上找到答案,并且jQuery offset()似乎没有按预期工作。情况如下:
我正在尝试做的是垂直对齐到两个div。一种是位置不确定的内联块(y 坐标取决于有多少后续内容。另一个div 有免费信息,我希望它位于另一个div 的一侧,位于网站的边距状区域。
根据我对jQuery.offset()如何工作的理解,它应该能够获取内容div相对于文档的坐标,然后可以用来分配边缘div的绝对位置。但是,当我在内容div上调用offset()时,我得到的位置(0px,0px)显然是不准确的。
我这样做的方式是错误的吗?
这是我的代码:
// Find the div we want to position to (works)
var related_node = $('#content-note-n').attr('data-nid');
var node_obj = $('#node-' + related_node);
// Get the offset position of that div (does not work- returns 0,0)
var position = node_obj.offset();
alert("Top: " + position.top);
$('#content-note-n').css('top', position.top);
这是相关的HTML(我使用的是CMS,所以这大大简化):
<section id="zone-content">
<aside id="region-side">
<div id="content-note-n" data-nid="n">
<h3>Note N</h3>
</div>
</aside>
<div id="region-content">
<div id="node-n">
<div class="node-content">
<p>Content for Node N</p>
</div>
</div>
</div>
</section>
如果这也有帮助,可以发布 CSS,但没有一个元素是 display=none,jQuery 说这会破坏 offset()。
更新:
尝试将我的确切代码复制到 jsFiddle(不包括 css)中,它在那里按预期工作。现在将尝试通过 css 复制。
更新:
将所有CSS也复制到jsFiddle中,它仍然可以工作。我很困惑。
我尝试了一个测试用例...这对我来说很好用:-
<script type="text/javascript">
$(document).ready( initialise );
function initialise() {
var myObject = $("#my_div");
var myposition = myObject.offset();
$("#positioned").css({ 'top' : myposition.top , 'left' : myposition.left });
}
</script>
使用此 HTML
<body>
<div id="positioned" style="position:absolute;">overlap</div>
<div>Hello</div>
<div style="margin: 50px"><div id="my_div" type="text" name="name">original</div></div>
</body>
内容节点由 CMS 打印两次。一个在内容部分,另一个在隐藏部分(位于元素层次结构中可见部分的上方)。 jQuery仅返回隐藏部分中的节点,因此位置为0。当我向选择器添加一个类时,jQuery开始返回两个元素,这就是我发现这个问题的方式。我的猜测是,因为我发送的是一个只有 ID 标识符的选择器字符串,jQuery 智能地只发回一个元素。
因此,要回答原始问题,最佳做法当然是更改CMS打印节点隐藏副本ID的方式。快速解决方法是将"#section 内容"添加到选择器中,使其成为"#section 内容 #node-n"。
- 内容可编辑DIV单击/插入符号设置
- 使用Javascript对象为具有两个背景图像的DIV设置样式时出现问题
- Javascript/jQuery在可编辑的DIV中设置光标
- Div 设置为视口高度,即使调整屏幕大小也是如此
- 如何设置DIV背景图像css jquery
- 将DIV ID内的所有链接设置为返回false
- 如何使用JQuery.Load访问Div中加载URL的UL“id”,“name”等,以设置JQuery树视图
- JS - 使用变量设置 Div 背景颜色
- 如何使用 JavaScript 动态设置 DIV 元素的左侧和顶部 CSS 位置
- 如何根据背景图像的高度和宽度设置 DIV 尺寸
- 如果 DIV 包含选中的复选框,则将显示设置为阻止
- 如何滚动以在屏幕底部设置 DIV 的底部(监视器)
- 确定 DIV 的高度以百分比而不是像素设置
- 无法手动将 DIV 元素上的可见性设置为 true.“TH:IF”问题
- 使用 jQuery offset() 将绝对定位的 DIV 设置为另一个 DIV 的相同 y 坐标
- 如何为一堆php生成的DIV设置jQuery ID
- 将Div设置为占用具有浮动子对象的兄弟姐妹的父对象的剩余高度
- 将Div设置为空,然后重新填充,因为我的页面会在所有元素中闪烁
- 为Angular JS中正在折叠的Bootstrap DIV设置一个默认的打开状态
- 如何:将Div设置为链接,而不是其中的图像