jquery scrollTo 无法在 IE 中使用负值

jquery scrollTo not working in IE with negative vlaues

我正在为公司内部网构建一个小型演示网站。 它基本上是一些水平放置的屏幕或面板,带有导航按钮以在屏幕中移动用户...

问题是网站是希伯来语,需要向左滚动。

我一直在使用 scrollTo 脚本在屏幕之间平滑滚动,并在 firefox 和 chrome 中测试它工作正常。

但是 Internet Explorer 根本不起作用...当调用 scrollTo 移动到负位置的对象时,它会跳转到 0 位置。

这里有一个 fiddle http://jsfiddle.net/dogstar10/s8cbdy8x/1/

$('.panel').click(function() {
    vartarget = "#"+$(this).data("target")
    $('body').scrollTo($(vartarget), 1000);
});

body{direction:rtl;}
.panel{position:absolute; z-index:3; width:250px; height:250px; background:green; top:50px; }
#panel1{left:0; }
#panel2{ left:-400px;}
#panel3{ left:-800px;}
#panel4{ left:-1200px;}

<div class="panel" data-target="panel2" id="panel1"></div>
<div class="panel" data-target="panel3"  id="panel2"></div>
<div class="panel" data-target="panel4"  id="panel3"></div>
<div class="panel" data-target="panel1"  id="panel4"></div>

单击 FF 或 chrome 中的方块,屏幕平滑地滚动到下一个方块...在 IE 中似乎没有任何反应,但如果您手动滚动然后单击一个方块,它会跳转到第一个广场。

有人有什么建议吗?

我在 mac,所以这里没有 IE。但是,我注意到您将 x 对象本身作为参数传递给 scrollTo 函数:

vartarget = "#"+$(this).data("target");
$('body').scrollTo($(vartarget), 1000);

而且很高兴知道 chrome、safari、firefox 等正在接受它,但该参数应该是一个数字而不是一个对象,所以我会试试这个:

$('body').scrollTo($(vartarget).css('left'), 1000);

这样你就可以发送号码了。你甚至应该去掉 px 以防万一。

jquery.scrollTo 有一个名为 limit 的设置,默认情况下为 true 并强制执行边界。 尝试添加 limit:false,这可能会解决问题,也可能不会。如果结束位置导致负数,这可能会阻止插件将其变为 0。

Here 是文档。

更新:在 jsfiddle 上试过,没有解决:( 我不确定您是否可以解决它,我修改了演示以使用 window.scrollTo() 这是一种本机方法,超低级别但仍然无法正常工作。

$('.panel').click(function() {
    var target = "#"+$(this).data("target");
    var pos = $(target).offset().left;
    window.scrollTo(pos, 0);
});

此致