滚动适用于Chrome,但不适用于Firefox或IE

时间:2012-09-11 18:07:59

标签: javascript cross-browser

当用户点击几个不同的链接时,我正在使用以下代码滚动窗口:

$(document).ready(function(){
$("#footerlink").click(function(){
    $("#slide1").slideto({});
});
$("#logo").click(function(){
    $("#slide1").slideto({});
});
$("#home").click(function(){
    $("#slide1").slideto({});
})      
$("#others").click(function(){
    $("#slide2").slideto({});
})
$("#me").click(function(){
    $("#slide3").slideto({});
});
$("#laughs").click(function(){
    $("#slide4").slideto({});
});
})

幻灯片功能来自此脚本:

(function(b) {
b.fn.slideto = function(a) {
    a = b.extend({
        slide_duration: 1000,
        highlight_duration: 3E3,
        highlight: false,
        highlight_color: "#FFFF99"
    }, a);
    return this.each(function() {
        obj = b(this);
        b("body").animate({
            scrollTop: obj.offset().top
        }, a.slide_duration, function() {
            a.highlight && b.ui.version && obj.effect("highlight", {
                color: a.highlight_color
            }, a.highlight_duration)
        })
    })
}
})(jQuery);

我的问题是滚动仅适用于Chrome,而不适用于Firefox或IE。 FF和IE很好地降级,所以链接仍然有效,但我真的很喜欢滚动动画。

仅供参考:我用这两行来调用Jquery:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.23/jquery-ui.min.js"></script>

以下是我的代码的小提琴:http://jsfiddle.net/LwXR3/

你能帮我跟踪一下我的问题吗?

1 个答案:

答案 0 :(得分:0)

好的,这太长了,无法发表评论。你应该真的避免上面代码中的复制粘贴混乱。除了ids之外,代码几乎完全相同。使用href获取位置而不是硬编码。

<强> HTML

<a class="slideLinks" href="#foo">go to foo</a>

<强>的JavaScript

$(".slideLinks").on("click", function(e){ 
    e.preventDefault(); //p[revent the click
    $(this.hash).slideto({}); //call your slide to function with the hash value for the id
});