jQuery - 动态创建元素的偏移量

时间:2015-04-10 21:27:48

标签: jquery html

请查看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中的一切正常。通过查看我的stot变量值,我发现向st添加98会突然完全更改ot值,同时滚动应保持不变。如果我删除98,则滚动时ot不会更改。所以在某种程度上似乎是一个不同的问题。

0 个答案:

没有答案