请查看Edit2
在我网站的部分内容中,我有以下结构(简化):
<div class="switcher_content">
<!--The Content which should be displayed get's loaded in here by jquery-->
</div>
<div class="cont_1" style="display: none">
Content 1 here
</div>
<div class="cont_2" style="display: none">
Content 2 here
</div>
我网站上显示的内容位于.switcher_content
div中。我有一个jQuery函数可以从.cont_1
或.cont_2
获取内容,具体取决于用户点击的内容,并使用.switcher_content
方法将其放入.html
。
问题是,当我尝试检索加载到.switcher_content
div中的元素的偏移值(例如var ot = $(this).offset().top;
- 而this
是.switcher_content
内的元素}),我只获得ot = 0
,但由于元素位于页面中间,因此不是这种情况。
在我添加了在两个内容之间切换的可能性之前,这一切都运行良好,所以它可能与元素是动态创建的事实有关。
有没有办法重新计算这些元素的位置和偏移量,或者如何检索动态元素的真实偏移值?
提前致谢!
修改 这是我用于这些操作的代码: 这是切换台:
$(".switcher_btn.switcher_to_cont_1").click(function() {
if($(".sky_go_cntrl").hasClass("active_go")){
$(".sky_go_cntrl").removeClass("active_go");
$(".sky_go_cntrl").addClass("active_sln");
var newhtml = $(".cont_1").html();
$(".switcher_content").html(newhtml);
}
})
它基本上只是将html从.cont_1中删除并将其用作.switcher_content的内容。
然后我尝试使用此代码获取偏移值:
$(".all_planes a").css({fontSize: "16px"})
$( ".plane_container" ).each(function( ) {
var st = $(window).scrollTop() + 98;
var ot = $(this).offset().top;
var type = $(this).data("type");
var diff = st - ot;
if(st > ot && diff < 280) {
if (window.console) console.log(this);
$("." + type + "_link").css({
fontSize: "20px"
});
}
});
看着控制台,我似乎确实选择了我想要的div盒。
EDIT2
我可能已经确定了真正的问题,因为我的jsfiddle中的一切正常。通过查看我的st
和ot
变量值,我发现向st
添加98会突然完全更改ot
值,同时滚动应保持不变。如果我删除98,则滚动时ot
不会更改。所以在某种程度上似乎是一个不同的问题。