jQuery:元素offset()相对于另一个元素的坐标

时间:2010-11-24 18:04:17

标签: jquery html css jquery-ui

我正在尝试使用jQueryjQuery UI<ul>元素水平拖动到<div>内。

我想获取位于<li>元素内的按钮的坐标,使它们位于#the_parent内,但每次调整浏览器窗口时,我得到的位置都会改变,我怎么能获得相对于#the_parent的位置?

<script type:"text/javascript">
    $(document).ready (function () {
        $(".button").click (function () {
            var offset = $(this).offset();
            alert (offset.left);
        });
    });
</script>
<style type="text/css">
    #dragme li { float:left; list-style:none; }
    #the_parent { width:100%; }
    .spacer { width:100px; }
    .button div { padding:5px; background-color:darkgrey; color:white; }
</style>
<!-- this is contained inside another div of width:600px and it's centered in the middle of the page -->
<div id="the_parent">
    <ul id="dragme">
        <li class="spacer"></li>
        <li id="btn_01" class="button">
            <div>click</div>
        </li>
        <li class="spacer"></li>
        <li id="btn_02" class="button">
            <div>click</div>
        </li>
        <li class="spacer"></li>
    </ul>
</div>

2 个答案:

答案 0 :(得分:7)

您希望position()代替offset()。来自jQuery文档:

  

offset():获取相对于文档的匹配元素集中第一个元素的当前坐标。

     

position():获取相对于偏移父元素的匹配元素集中第一个元素的当前坐标。

答案 1 :(得分:1)

您想使用.position()而不是.offset()