仅针对jQuery中的第一次单击

时间:2012-02-17 23:06:47

标签: javascript jquery

我有这段代码,我只需要针对一行进行首次点击,然后针对其余部分进行普通点击。

$esCarousel.show().elastislide({
    imageW  : 240,
    onClick : function( $item ) {
        if( anim ) return false;
        anim    = true;
        // only in the FIRST CLICK click show wrapper (expected but don't work)
        _addImageWrapper();
        // on click show image
        _showImage($item);
        // change current
        current = $item.index();
    }
});

当我点击该项目时,一切都很好,但当我再次点击时,我只需要“$ _showImage($ item);”而不是“_addImageWrapper();”。

你能帮帮我吗?我真的是一个关于js的新手:(

更新: 当我关闭时(用fadeOut关闭)它不会再打开!必须是因为已经点击了轮播...如何“重置”点击?

$navClose.on('click.rgGallery', function( event ) {
    $('.rg-image-wrapper').fadeOut('2000');
    return false;
});

感谢您的帮助,我正在学习这个(我想:x)!

3 个答案:

答案 0 :(得分:7)

您可以在此代码之外设置变量:

var clickedCarousel = false;

$esCarousel.show().elastislide({
    imageW  : 240,
    onClick : function( $item ) {
        if( anim ) return false;
        anim    = true;
        // only in the FIRST CLICK click show wrapper (expected but don't work)
        if(!clickedCarousel) {
          _addImageWrapper();
          clickedCarousel = true;
        }
        // on click show image
        _showImage($item);
        // change current
        current = $item.index();
    }
});

这是否符合您的需要?

<强>更新 关于此更新:

更新:当我关闭时(用fadeOut关闭)它不会再打开!必须是因为已经点击了轮播...如何“重置”点击?

fadeOut()会对此表单进行回调:

obj.fadeOut( [duration] [, callback] )

回调可以是内联函数或预定义函数,因此您可以使用此(内联):

$navClose.on('click.rgGallery', function( event ) {
    $('.rg-image-wrapper').fadeOut(2000,function(){
       clickedCarousel = false; // reset to false after fade out is complete
    });
    return false;
});

这有帮助吗?

答案 1 :(得分:2)

_addImageWrapper()条件下换取if (!this.clicked),然后设置this.clicked = true;

答案 2 :(得分:0)

添加一个变量以跟踪它是否已被点击。

$(function() {
    var alreadyClicked = false;
}

$esCarousel.show().elastislide({
    imageW  : 240,
    onClick : function( $item ) {
        if( anim ) return false;
        anim    = true;
        if (!alreadyClicked) {
            alreadyClicked = true;
            _addImageWrapper();
        }
        // on click show image
        _showImage($item);
        // change current
        current = $item.index();
    }
});