jQuery单击运行一次

时间:2014-03-24 09:31:03

标签: javascript jquery click jquery-animate

我正在使用缩略图创建一个jQuery库,我有2个箭头可以“滚动”这些缩略图。我首先尝试使用click事件,但我的动画只运行一次。

我在互联网上搜索了.on( 'click' )事件。我尝试了这个,但没有结果。即使使用.off( 'click' )删除之后的事件。

任何人都可以帮我吗?

$("#top_slide_button").on( 'click', function () {
    $("#slide_frame").animate( { marginBottom: -50 }, 200);
    $("#top_slide_button").off( 'click' );
});

$("#bottom_slide_button").on( 'click', function () {
    $("#slide_frame").animate( { marginTop: -50 }, 200);
    $("#bottom_slide_button").off( 'click' );
});

3 个答案:

答案 0 :(得分:0)

你可以试试这个:

$("#top_slide_button").off( 'click' ).on( 'click', function () {
    $("#slide_frame").animate( { marginBottom: -50 }, 200);
});

$("#bottom_slide_button").off( 'click' ).on( 'click', function () {
    $("#slide_frame").animate( { marginTop: -50 }, 200);
});

答案 1 :(得分:0)

您需要使用动画的相对值

  

动画属性也可以是相对的。如果提供了一个值   一个前导+ =或 - =字符序列,然后目标值是   通过从当前加上或减去给定数字来计算   财产的价值。

$("#top_slide_button").on('click', function () {
    console.log('click')
    $("#slide_frame").stop(true).animate({
        marginTop: '-=50'
    }, 200);
});

$("#bottom_slide_button").on('click', function () {
    $("#slide_frame").animate({
        marginTop: '+=50'
    }, 200);
});

演示:Fiddle

答案 2 :(得分:0)

您的问题是边距设置为50,将其移至50,如果再次单击它,它将保持在50.您需要增加margin-top,即每次增加50。

即:

$("#top_slide_button").on('click', function () {
    $("#slide_frame").stop(true).animate({
        marginTop: '-=50'
    }, 200);
});

$("#bottom_slide_button").on('click', function () {
    $("#slide_frame").animate({
        marginTop: '+=50'
    }, 200);
});

http://jsfiddle.net/PbBq2/