【问题标题】:Footer toggle with changing image更改图像的页脚切换
【发布时间】:2012-03-02 06:48:01
【问题描述】:

感谢您给我机会得到帮助。

我想创建一个切换页脚(滑动面板)。

我发现下面的代码可以正常工作,但我希望能够在滑动面板时更改图像:打开和关闭的图像不同(向上箭头 --> 向下箭头)。

我应该如何继续将此功能与此代码集成?

提前非常感谢!

代码如下:

<script type="text/javascript">
jQuery(function($) {
var slide = false;
var height = $('#footer_content').height();
$('#footer_button').click(function() {
var docHeight = $(document).height();
var windowHeight = $(window).height();
var scrollPos = docHeight - windowHeight + height;
$('#footer_content').animate({ height: "toggle"}, 1000);
if(slide == false) {
    if($.browser.opera) { //Fix opera double scroll bug by targeting only HTML.
        $('html').animate({scrollTop: scrollPos+'px'}, 1000);
    } else {
        $('html, body').animate({scrollTop: scrollPos+'px'}, 1000);
    }
                       slide = true;
} else {
                       slide = false;
               }
});
});
</script>

【问题讨论】:

    标签: jquery footer slide


    【解决方案1】:

    你可以通过改变图片来源来改变图片:

    $('.classOfImage').attr('src','/images/up.png');
    

    你的图片必须有你在这里使用的类$('.classOfImage')

    <img src="/images/firstimage.pmg" alt="My Image" class="classOfImage" />
    

    您可以这样做以将其集成到您当前的代码中:

    var panel = false;
    

    在你的 click 函数之外定义这个变量并设置为 false。

    现在添加这个给你的点击功能:

    if(!panel){
        $('.classOfImage').attr('src','/images/secondimage.png');
        panel = true;
    } else if(panel) {
        $('.classOfImage').attr('src','/images/firstimage.png');
        panel = false;
    }
    

    正如我所见,您已经有一个像这样保存面板状态的变量,称为slide,因此您可以像这样使用它:

    $(function() {
        var slide = false;
        var height = $('#footer_content').height();
    
        $('#footer_button').click(function() {
    
        var docHeight = $(document).height();
        var windowHeight = $(window).height();
        var scrollPos = docHeight - windowHeight + height;
    
        $('#footer_content').animate({ height: "toggle"}, 1000);
    
        if(!slide) {
    
            $('.classOfImage').attr('src','/images/secondimage.png'); // LOOK HERE !!
    
            if($.browser.opera) {
                $('html').animate({scrollTop: scrollPos+'px'}, 1000);
            } else {
                $('html, body').animate({scrollTop: scrollPos+'px'}, 1000);
            }
                slide = true;
    
        } else {
    
            $('.classOfImage').attr('src','/images/firstimage.png'); // AND HERE !!
    
               slide = false;
        }
    
        });
    });
    

    注意:jQuery(function($) {$(function() {相同,if(slide == false)if(!slide)相同

    【讨论】:

    • 非常感谢,法比安。不幸的是,这段代码对我不起作用。图像会更改,但仅在我第二次单击时才会更改。我希望当切换器滑动面板时图像会自动更改(无需任何点击)。你有我的解决方案吗?再次感谢您的帮助。
    • 没有任何点击是什么意思?我会在几分钟后回复你,并会为你发布一个 jsfiddle。
    • 我认为你的面板默认是打开的,对吧?所以你必须将var slide = false; 更改为var slide = true;。这是一个 jsfiddle 供您了解它是如何工作的。 (而不是像我那样更改文本,您可以更改图像)jsfiddle.net/LHhQu。如果我可以帮助您,请投票/接受,或者如果您有其他问题,请回复我:)
    • 亲爱的 Fabian,你太棒了!它现在对我来说就像一个魅力!我的错误如下:我在代码中颠倒了第一张和第二张图片。非常感谢您的善意和耐心!
    • 不客气!很高兴我能帮上忙。如果您愿意,您仍然可以投票:)
    猜你喜欢
    • 1970-01-01
    • 2014-07-11
    • 1970-01-01
    • 2021-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-13
    • 2012-02-14
    相关资源
    最近更新 更多