jQuery .offset() gets and sets the current coordinates of the first element

Syntax and Description for .offset() getter

.offset() (getter)

gets the current coordinates of the first element in the set of matched elements relative to the document.

Its return value is an object containing the properties top and left.

.offset() retrieves the current position of an element relative to the document. .position() retrieves the current position relative to the offset parent.

The following code gets the offset of last b tag.


<html>
  <head>
    <script src="http://java2s.com/style/jquery-1.8.0.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function(){<!--from  w  w  w  . ja v a  2s. c om-->
            var b = $("b:last");
            var offset = b.offset();
            alert(offset.left);
            alert(offset.top);

        });
    </script>
  </head>
  <body>
    <body>

       <b>Hello java2s.com java2s.com</b>
    </body>
</html>

Click to view the demo

Offset from an event

The following code prints out offset from an event.


<html>
  <head>
    <script src="http://java2s.com/style/jquery-1.8.0.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function(){<!--from w w  w. ja  va2 s.  c o  m-->
            $("*", document.body).click(function (e) {
                  var offset = $(this).offset();
                  e.stopPropagation();
                  alert(this.tagName + 
                        " coords ( " + 
                        offset.left + 
                        ", " +
                        offset.top + " )");
           });
        });
    </script>
  </head>
  <body>
    <body>
       <b>Hello java2s.com java2s.com</b>
    </body>
</html>

Click to view the demo

Syntax and Description for .offset() setter

.offset(coordinates) setter

sets the current coordinates of the first element in the set of matched elements relative to the document. coordinates is an object containing the top and left properties. Return value is the jQuery object, for chaining purposes.

.offset() setter method moves an element to new position.

The element's position is specified relative to the document.

The following code gets the offset of a div with an id of "box", and displays the left and top properties with an alert box:


<!DOCTYPE html>
<html>
<head>
<style type="text/css">
div {<!-- w  w w.j a  v  a2s. c  om-->
  position: absolute;
  left: 10px;
  top: 50px;
  width: 20px;
  height: 20px;
  background-color: green;
}
</style>
<script src="http://java2s.com/style/jquery-1.8.0.min.js"></script>
<script type="text/javascript">
  $(function() {
    $("div#box").click(function() {
      var pos = $(this).offset();
      $("#watcher").text(pos.top + ":" + pos.left);
    });
  });
</script>
</head>
<body>
  <p>
    Where is the box? <span id="watcher">java2s.com</span>
  </p>
  <div id="box"></div>
</body>
</html>

Click to view the demo

Reposition an element

We can use .offset() setter to reposition an element.

$(selector).offset(coordinatesObject);

where coordinatesObject is any object that contains a top and left property set to integer values. For example:


<!DOCTYPE html>
<html>
<head>
<style type="text/css">
div {<!--   w  ww.j  a v a  2 s  .  c  om-->
  position: absolute;
  left: 10px;
  top: 50px;
  width: 20px;
  height: 20px;
  background-color: green;
}
</style>
<script  src="http://java2s.com/style/jquery-1.8.0.min.js"></script>
<script type="text/javascript">
  $(function() {
    $("div#box").click(function() {
      var pos = $(this).offset({
                    top:100,
                    left:100
                });
      $("#watcher").text(pos.top + ":" + pos.left);
    });
  });
</script>
</head>
<body>
  <p>
    Where is the box? <span id="watcher"></span>
  </p>
  <div id="box"></div>
</body>
</html>

Click to view the demo





















Home »
  jQuery »
    jQuery Tutorial »




Basics
Selector
DOM
Event
Effect
Utilities