代码之家  ›  专栏  ›  技术社区  ›  Alex

如何获得元素的右偏移量?- jQuery

  •  75
  • Alex  · 技术社区  · 15 年前

    这可能是一个非常简单的问题,但我该如何获得 正确的 jquery中元素的偏移量?

    我能做到:

    $("#whatever").offset().left;
    

    它是有效的。

    但似乎:

    $("#whatever").offset().right 
    

    是未定义的。

    那么,如何在jquery中实现这一点呢?

    谢谢!!

    8 回复  |  直到 15 年前
        1
  •  147
  •   user1063287    7 年前

    亚历克斯,加里:

    如有要求,以下是我作为答案发布的评论:

    var rt = ($(window).width() - ($whatever.offset().left + $whatever.outerWidth()));
    

    谢谢你告诉我。

    在伪代码中,可以表示为:

    右偏移量为:

    窗户的 width
    (元素的 left offset 加上元素的 outer width )

        2
  •  28
  •   Arash Milani    13 年前
    var $whatever        = $('#whatever');
    var ending_right     = ($(window).width() - ($whatever.offset().left + $whatever.outerWidth()));
    

    参考文献: .outerWidth()

        3
  •  14
  •   Greg    15 年前

    也许我误解了你的问题,但是偏移量应该给你两个变量:水平和垂直。这定义了元素的位置。所以你要找的是:

    $("#whatever").offset().left
    

    $("#whatever").offset().top
    

    如果需要知道元素的正确边界在哪里,则应使用:

    $("#whatever").offset().left + $("#whatever").outerWidth()
    
        4
  •  8
  •   Emphram Stavanger    14 年前

    只是格雷格说的一个补充:

    $(“whatever”).offset().left+$(“whatever”).outerwidth())

    此代码将获得相对于左侧的正确位置。如果目的是获得右侧相对于右侧的位置(如使用CSS时 right 属性),则需要添加代码,如下所示:

    $(“parent_container”).innerwidth()-($(“whatever”).offset().left+$(“whatever”).outerwidth())

    此代码在动画中很有用,当最初无法设置 正确的 CSS中的属性。

        5
  •  4
  •   Gary amrfaissal    13 年前

    布兰登·克劳福德在这里得到了最好的答案(在评论中),所以我将把它移到一个答案,直到他得到答案为止(也许会扩大一点)。

    var offset = $('#whatever').offset();
    
    offset.right = $(window).width() - (offset.left + $('#whatever').outerWidth(true));
    offset.bottom = $(window).height() - (offset.top + $('#whatever').outerHeight(true));
    
        6
  •  4
  •   Alessandro Minoccheri    13 年前

    实际上,只有当窗口完全不从左上角滚动时,这些功能才起作用。
    您必须减去窗口滚动值,以获得一个对重新定位元素有用的偏移量,以便它们留在页面上:

    var offset = $('#whatever').offset();
    
    offset.right = ($(window).width() + $(window).scrollLeft()) - (offset.left + $('#whatever').outerWidth(true));
    offset.bottom = ($(window).height() + $(window).scrollTop()) - (offset.top + $('#whatever').outerHeight(true));
    
        7
  •  4
  •   Barney    9 年前

    有一个本地的dom api可以实现这个开箱即用的功能。 getBoundingClientRect :

    document.querySelector("#whatever").getBoundingClientRect().right
    
        8
  •  2
  •   Nazik mark    12 年前

    获取 div/table (left) = $("#whatever").offset().left; 好吧!

    获取 div/table (right) 您可以使用下面的代码。

     $("#whatever").width();