jQuery has two methods named .top() and .left() for setting the top
and left offset via css. I just wrote a plugin for getting the offset
of an element and did some pretty extensive cross-browser testing.
Here is the blog entry:
http://brandonaaron.net/articles/2006/10/02/jquery-plugin-offset
--
Brandon Aaron
On 10/3/06, Dave Benjamin <[EMAIL PROTECTED]> wrote:
> Is there any plan to add jQuery methods to retrieve and set the
> coordinates of an element on the page? It seems like a good addition to
> dimensions.js, perhaps. Here's what I currently use:
>
> $.fn.x = function(n) {
> var result = null;
> this.each(function() {
> var o = this;
> if (n === undefined) {
> var x = 0;
> if (o.offsetParent) {
> while (o.offsetParent) {
> x += o.offsetLeft;
> o = o.offsetParent;
> }
> }
> if (result === null) {
> result = x;
> } else {
> result = Math.min(result, x);
> }
> } else {
> o.style.left = n + 'px';
> }
> });
> return result;
> };
>
> $.fn.y = function(n) {
> var result = null;
> this.each(function() {
> var o = this;
> if (n === undefined) {
> var y = 0;
> if (o.offsetParent) {
> while (o.offsetParent) {
> y += o.offsetTop;
> o = o.offsetParent;
> }
> }
> if (result === null) {
> result = y;
> } else {
> result = Math.min(result, y);
> }
> } else {
> o.style.top = n + 'px';
> }
> });
> return result;
> };
>
> If there are multiple elements matched, they will all get the same x- or
> y-position. On retreival, they return the minimum position of all the
> elements in the query result.
>
> Perhaps it might be better to have a single method that returns a pair of
> {x, y} values... though there's something elegant about being able to say
> things like:
>
> $('#obj1').x($('#obj2').x() + 20);
>
> Dave
>
> _______________________________________________
> jQuery mailing list
> [email protected]
> http://jquery.com/discuss/
>
_______________________________________________
jQuery mailing list
[email protected]
http://jquery.com/discuss/