首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >控制哪些点击会触发jQuery lightGallery

控制哪些点击会触发jQuery lightGallery
EN

Stack Overflow用户
提问于 2015-06-06 15:02:28
回答 3查看 3.2K关注 0票数 1

我一直在尝试在我的网站上实现jQuery LightGallery,但我有一个独特的结构来实现缩略图的需要。这些图库用于在只有一个人查看图库的特定活动中拍摄的照片。我有我自己的基于javascript的‘喜欢’这些照片的系统,所以人们可以喜欢这些照片。问题是人们想在手机上看图片,而这个画廊并不是为此而建的。LightGallery就是答案。因此,在每个缩略图的下面,我有一个LIKE按钮,这是一个DIV,上面有一个链接,它会触发一个javascript函数。问题是,当我试图在LightGallery的列表结构中实现此功能时,LightGallery侦听器会覆盖该DIV上的链接,而不是触发大图像。举个例子。

代码语言:javascript
复制
<li data-src="<?=$FrameLink?>" id='Cell<?=$FrameNumber?>'>

<a href="#" title="IMAGE #<?=$FrameNumber?>"><img src="<?=$ThumbLink?>" height="173" width="117" border="0" id='IMG<?=$FrameNumber?>' class="IMGThumb"></a>

<a href="javascript:loadintoIframe('FavList','favlist.php?Name=<?=$Name?>&Do=Remove&Frame=<?=$FrameWOExt?>=')" onclick="FavChange('<?=$FrameNumber?>','ON')"><div id='NoLike<?=$FrameNumber?>' class='NoLike'></div></a>

 </li>

所以你可以想象,最后一个链接和div应该允许你点击它并触发loadintoiframe javascript...但是LightGallery覆盖了这个链接。我试着在CSS中建立z索引,看看能不能把那个DIV放在LightGallery正在做的事情上面,但是每次我点击那个div,它都会放大照片。

所以我的问题是,如何更改LightGallery代码,使其仅添加触发图像放大的链接,而不是整个列表项?或者让它只监听缩略图的点击,而不是整个列表项?谢谢!

这里有一张照片来说明我的观点。Photo of how I'd like it to work

EN

回答 3

Stack Overflow用户

发布于 2016-02-20 19:22:15

我也有同样的问题。我知道修改插件的原始代码并不理想,但这就是我所做的--一个非常小的改动。我得到了我的图像的链接-一个下载图像,另一个缩放图像并显示在lightgallery弹出窗口中。

如果您打开lightgallery.js,然后转到第176行,I changed it from:

代码语言:javascript
复制
_this.$items.on('click.lgcustom', function(event) {

代码语言:javascript
复制
_this.$items.find('a.zoom').on('click.lgcustom', function(event) {

因为我想用来显示弹出窗口的链接上的类名是zoom。你也可以扩展插件的选项,把它写成选择器。

票数 1
EN

Stack Overflow用户

发布于 2015-06-06 15:39:11

我已经编辑并添加了UL版本,但我认为这可能有点繁琐

代码语言:javascript
复制
 $('ul').click(function(event){
  //check whether the anchor tag is the 'LIKE'  
  if (event.target.id.indexOf('NoLike')!=-1)
  {  
     //Using JQuery to trigger the click event of the anchor tag
     //First I get the parent of the div, which is the anchor tag
     var par=$(event.target).parent();
     //Then I bind the href event of the parent anchor tag to another anchor
     var $a=$('<a></a>');
     $a.attr('href',par.attr('href'));
     //This anchor tag $a appends to the body where it is out of the 
     //LightGallery's listeners
     //$('body').append($a);  
     //I commented the above append code, as you donot require it,
     $a.get(0).click();
     //$a.remove(); Remove is not required since not appending to body
     return false;
  }
  return true;
  });
票数 0
EN

Stack Overflow用户

发布于 2018-02-16 18:30:42

我已经用3个函数做到了这一点。在不想显示图库的元素单击时,只需在其他元素上调用preventGalleryShow,调用showGallery即可。

CSS:

代码语言:javascript
复制
.hidden{
    display:none;
}

JAVASCRIPT:

代码语言:javascript
复制
var hideGallery = function(){
    $('.lg-backdrop').addClass('hidden');
    $('.lg-outer').addClass('hidden');
};

var showGallery = function(){
    $('.lg-backdrop').removeClass('hidden');
    $('.lg-outer').removeClass('hidden');
};

var preventGalleryShow = function(event, $galleryObj){
    event.preventDefault();
    event.stopPropagation();
    $galleryObj.off('onAfterOpen.lg').on('onAfterOpen.lg',function(e){
        hideGallery();
    });
    $galleryObj.trigger('onAfterOpen.lg');
};

示例:

代码语言:javascript
复制
$('.command-delete', function(event){
    preventGalleryShow(event,$gallery);
    //do your magic
});

$('.anythingelse').on('click', function(event){
    showGallery();
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30679974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档