jQuery Offset().left无法正常工作

Fil*_*nes 11 javascript jquery offset

我有一个关于jQuery offset()函数的问题.我在我的网站上使用它,在点击电子邮件图标后显示"发送电子邮件给朋友"窗口.

但是,窗口显示在浏览器窗口的右侧,而不是图标的位置.你可以在http://pec.solarismedia.net/calendarday.html上看到它

$(".emailFriend").hide();
    $(".emailIcon").on("click", function(e) {
        $(".emailFriend").css({
            "position": "absolute", 
            "left": $(this).offset().left, 
            "top": $(this).offset().top
        }).fadeIn(500);
        return false; 
    }); 

有一张图片显示了意图和现实之间的区别.

Mic*_*zyn 16

这是因为#containerposition: relative;.因此,电子邮箱的绝对设置与#container相关.您必须删除属性或使用以下内容计算值left:

$(this).offset().left - $('#container').offset().left
Run Code Online (Sandbox Code Playgroud)

  • @iRaS:这是一个毫无意义的环境变化。如果没有`.emailIcon`怎么办? (2认同)