句柄根据页面而不是其父级给出其位置,如何从其父级获得其左侧位置?

时间:2011-07-10 15:15:05

标签: jquery position offset

http://jsfiddle.net/nicktheandroid/TWKJb/5/

一旦你抓住处理程序并开始拖动它,处理程序就会以10px开始,它应该从0px开始,如果我向容器填充添加20px,它会从左侧推出额外的20px,现在当我第一次抓住手柄时,它开始时为30px ..

因此句柄从页面的左侧开始处于左侧位置。处理程序应该从其父级(轨道)给出其左侧位置,而不是从页面的左侧开始。

有人可以告诉我我做错了让手柄根据页面而不是其父级给出其左侧位置吗?几个小时我一直在搞乱这个> :(

1 个答案:

答案 0 :(得分:1)

如果您在Chrome中进行测试,就像我刚刚做的那样,那么它可能是Chrome似乎与.position()相关的常见问题,在文档页面的评论部分发布了一个插件修补程序 Ajaho 。但它一直是posted before on StackOverflow

jQuery.fn.aPosition = function() {
    thisLeft = this.offset().left;
    thisTop = this.offset().top;
    thisParent = this.parent();

    parentLeft = thisParent.offset().left;
    parentTop = thisParent.offset().top;

    return {
        left: thisLeft-parentLeft,
        top: thisTop-parentTop
    };
};

在演示中,我还在句柄上设置position: relative;,因为它需要相对于其父级。

更新了演示: http://jsfiddle.net/TWKJb/6/