为什么赢了';这个超级简单的jQuery不管用吗? #框{背景:红色;宽度:100px;高度:100px;颜色:#fff;线条高度:100px;} $(函数(){ $('a#clickMe')。单击(函数(e){ e、 预防默认值(); $('框').css('位置','绝对').animate({ “左”:“+=100px” },函数(){ if($('#box').offset().left>$(document.width()){ 警报('这就足够了') } }); }); }); 我动!

为什么赢了';这个超级简单的jQuery不管用吗? #框{背景:红色;宽度:100px;高度:100px;颜色:#fff;线条高度:100px;} $(函数(){ $('a#clickMe')。单击(函数(e){ e、 预防默认值(); $('框').css('位置','绝对').animate({ “左”:“+=100px” },函数(){ if($('#box').offset().left>$(document.width()){ 警报('这就足够了') } }); }); }); 我动!,jquery,Jquery,我试图在框到达页面末尾时提醒“这已经足够远了”。但警报从未出现 编辑 算了,算了吧。我不得不使用$(window.width(),而不是$(document.width() 因为向左移动元素会扩大文档的宽度 尝试添加以下css: <style type="text/css"> #box { background: red; width: 100px; height: 100px; color: #fff; line-height: 100px; } </style>

我试图在框到达页面末尾时提醒“这已经足够远了”。但警报从未出现

编辑
算了,算了吧。我不得不使用$(window.width(),而不是$(document.width()

因为向左移动元素会扩大文档的宽度

尝试添加以下css:

<style type="text/css">
    #box { background: red; width: 100px; height: 100px; color: #fff; line-height: 100px; }
</style>
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript">
    $(function() {

        $('a#clickMe').click(function(e) {
            e.preventDefault();
            $('#box').css('position', 'absolute').animate({
                'left' : '+=100px'
            }, function() {

                    if ($('#box').offset().left > $(document).width()) {
                        alert('that is far enough')
                    }

            });

        });
    });
</script>

<a href="" id="clickMe">Click Me</a>

<div id="box">I Move!</div>


我动!
示例:


编辑:已更新以使其与FF兼容。多亏了。

您有两个问题:

  • offset().left(可能)不是您要查找的,而是offset().left+元素的宽度
  • 如果元素移离文档的右边缘,文档的宽度将增加,因此您永远不能离开远边缘

  • 看一看。这是解决这个问题的一个选择。另一种方法是将documents width属性保存在某个位置,并在div元素“拉伸”document元素之前保持与原始宽度的比较。

    ahh有意义。已经用另一种方式解决了这个问题,但很高兴能解释为什么它以前不起作用。@Montgamery:请发布你的解决方案并接受它作为答案。@Tomalak Geret'kal:你是对的。看起来FF不喜欢
    溢出:隐藏在
    正文
    上(或其他什么),我需要初始化
    上的
    top
    CSS属性。这里有一个更新版本。谢谢您的提醒。@patrickdw:现在,第一次单击时,
    会向上移动到文档顶部。@Tomalak Geret'kal:是的,但这超出了问题的范围。回答的目的是解释为什么
    alert()
    从未触发,我就是这么做的,这也是OP接受答案的原因。实际上,如果使用
    document.width
    它会按原样工作。(尽管我仍然会在
    alert()
    行的末尾添加一个分号)。
    #wrapper {
        width:100%;
        height:100%;
        overflow:hidden;
        position:relative;
        margin:0;
        padding:0;
    }
    #box{ 
        background:orange;
        top:0;left:0;
    }
    
    <div id="wrapper">
        <a href="" id="clickMe">Click Me</a>
    
        <div id="box">I Move!</div>
    </div>