我有这段代码,我只需要针对一行进行首次点击,然后针对其余部分进行普通点击。
$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)!
答案 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();
}
});