2012-02-17 57 views
1

我有这段代码,我只需要针对一行的第一次点击和其余的一般点击。仅针对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($项目);”而不是“_addImageWrapper();”。

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

更新: 当我关闭(关闭fadeOut)它不会再次打开!它必须是因为传送带已被点击...我怎么能“重置” ?点击帮助

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

谢谢,我学习这个(我认为:X)!

+1

什么是'elastislide()'呢?关于elastislide()的 – Purag 2012-02-17 23:08:41

+0

- 是否重要?我们可以清楚地看到只有第一次点击才会触发的部分。它是否嵌套在名为“superwhatchamacallit”的函数中并不重要。也会好奇为什么downvote。一个新手正在问一个问题,答案会教他如何追踪一面旗帜。没有降低价值。 – 2012-02-17 23:33:24

回答

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(); 
    } 
}); 

这是否合适你的需要?

UPDATE: 关于本次更新:

更新:当我关闭(有淡出关闭)它不会再次打开!这一定是因为传送带已经被点击了......我怎样才能“重置”点击?

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; 
}); 

这是否帮助?

+0

完美的作品!谢谢! – edmundo 2012-02-17 23:35:00

+0

请查看更新,如何重置点击? – edmundo 2012-02-18 00:04:28

+0

编辑为重置查询提供 – MyStream 2012-02-18 00:17:46

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(); 
    } 
}); 
2

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

相关问题