在URL栏中显示灯箱的每个图片的特定锚点 [英] Showing specific anchors for each pictures of a lightbox in URL bar

查看:107
本文介绍了在URL栏中显示灯箱的每个图片的特定锚点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一张灯箱,每张图片都有一个锚点。

但是锚点并没有显示每张图片的具体ID,它在URL栏中显示如下:




  • www.mywebsite.com/gallery.php#example/1

  • www.mywebsite.com/gallery.php #example / 2

  • www.mywebsite.com/gallery.php#example/3



所以,我想知道是否可以在网址栏中显示具体的ID: b
$ b


  • www.mywebsite.com/gallery.php# bird

  • www.mywebsite.com/gallery.php#dog

  • www.mywebsite.com/gallery.php#cat



有什么想法?感谢。



Html

 < ; ul class =thumbnailsid =my-gallery> 
< li class =span2>
< a href =images / full / example-bird.jpgclass =thumbnailid =bird>
< img src =images / thumbs / example-bird.jpg>
< / a>
< / li>
< li class =span2>
< a href =images / full / example-dog.jpgclass =thumbnailid =dog>
< img src =images / thumbs / example-dog.jpg>
< / a>
< / li>
< li class =span2>
< a href =images / full / example-cat.jpgclass =thumbnailid =cat>
< img src =images / thumbs / example-cat.jpg>
< / a>
< / li>
< / ul>

脚本

  $('#my-gallery li a')。iLightBox({
skin:'dark',
path:'horizo​​ntal',
fullViewPort:'fill',
infinite:true,
linkId:'example',
overlay:{
opacity:1,
blur:false
},
controls:{
thumbnail:false
},
styles:{
nextOffsetX:-45,
prevOffsetX:-45
}
});


解决方案

很难提出合适的解决方案, t测试iLightBox。



参考iLightBox网站,您可以使用提供的回调:

 iLightBox({
skin:'dark',
path:'horizo​​ntal',
fullViewPort:'fill','code'$('#my-gallery li a' ,
无限:true,
linkId:'example',


回调:{
onShow:function(api){
$ (location).attr(hash,$(api.currentElement).attr(id));
}
},


覆盖: {
opacity:1,
blur:false
},
controls:{
thumbnail:false
},
styles:{
nextOffsetX:-45,
prevOffsetX:-45
}
});

我突出显示了我插入的行。我的方法是使用iLightBox的onShow事件的回调函数,用jQuerys $(location).attr(hash,value); 来更改哈希值。



问题是我不确定onShow是否是正确的事件,如果currentElement实际上是锚定的。这是你必须找出你自己的东西。对不起。

编辑



我想如果你在做这是我的方式,你必须从你的参数中删除 linkId



编辑



我在上面链接的测试页上尝试了一些东西。



如果我粘贴它进入控制台:

  $('#deeplinking_looping_gallery li a')。iLightBox({
skin:'metro -black',
路径:'horizo​​ntal',
fullViewPort:'fill',
无限:真,
叠加:{
不透明度:1,
blur:false
},
callback:{
onBeforeLoad:function(api){
$(location).attr(hash,$(#deeplinking_looping_gallery li ).eq(api.currentItem).children(a)。data(caption));
}
},
controls:{
thumbnail:false
},
款式:{
nextOffsetX:-45,
prevOffsetX:-45
}
});

编辑
<

  $(a [data-caption = '+ $(location).attr(hash)。substr(1)+'])。trigger(click); 

它会触发合适锚点的click事件(就像用鼠标单击一样)。


I have a lightbox where each pictures has an anchor.
But the anchor doesn't show the specific ID for each pictures, it appears like this in the URL bar :

  • www.mywebsite.com/gallery.php#example/1
  • www.mywebsite.com/gallery.php#example/2
  • www.mywebsite.com/gallery.php#example/3

So, I wonder if it's possible to show in the URL bar the specific ID :

  • www.mywebsite.com/gallery.php#bird
  • www.mywebsite.com/gallery.php#dog
  • www.mywebsite.com/gallery.php#cat

Any ideas ? Thanks.

Html

 <ul class="thumbnails" id="my-gallery">
        <li class="span2">
          <a href="images/full/example-bird.jpg" class="thumbnail" id="bird">
            <img src="images/thumbs/example-bird.jpg">
          </a>
        </li>
        <li class="span2">
          <a href="images/full/example-dog.jpg" class="thumbnail" id="dog">
            <img src="images/thumbs/example-dog.jpg">
          </a>
        </li>
        <li class="span2">
          <a href="images/full/example-cat.jpg" class="thumbnail" id="cat">
            <img src="images/thumbs/example-cat.jpg">
          </a>
        </li>
 </ul>

Script

$('#my-gallery li a').iLightBox({
    skin: 'dark',
    path: 'horizontal',
    fullViewPort: 'fill',
    infinite: true,
    linkId: 'example',
    overlay:{
        opacity: 1,
        blur: false
        },
    controls: {
        thumbnail: false
        },
        styles: {
            nextOffsetX: -45,
            prevOffsetX: -45
        }
});

解决方案

It's difficult to suggest an appropriate solution since I can't test iLightBox.

Referring to the iLightBox website, you could use the callback provided:

$('#my-gallery li a').iLightBox({
    skin: 'dark',
    path: 'horizontal',
    fullViewPort: 'fill',
    infinite: true,
    linkId: 'example',


    callback: {
        onShow:function(api) {
            $(location).attr("hash",$(api.currentElement).attr("id"));
        }
    },


    overlay:{
        opacity: 1,
        blur: false
        },
    controls: {
        thumbnail: false
        },
        styles: {
            nextOffsetX: -45,
            prevOffsetX: -45
        }
});

I highlighted the lines I inserted. My approach is using the callback for the onShow-event of the iLightBox for changing the Hash with jQuerys $(location).attr("hash","value");.

The problem is that I'm not sure if onShow is the correct event to hook into and if currentElement is in fact the anchor or not. This is something you have to find out yourself. I'm sorry.

Edit

I think if you're doing it my way, you have to remove that linkId from your parameters.

Edit

I tried something on the test page you linked above.

This code works fine for me if I paste it into the console:

$('#deeplinking_looping_gallery li a').iLightBox({
    skin: 'metro-black',
    path: 'horizontal',
    fullViewPort: 'fill',
    infinite: true,
    overlay: {
        opacity: 1,
        blur: false
    },
    callback: {
        onBeforeLoad:function(api) {
            $(location).attr("hash",$("#deeplinking_looping_gallery li").eq(api.currentItem).children("a").data("caption"));
        }
    },
    controls: {
        thumbnail: false
    },
    styles: {
        nextOffsetX: -45,
        prevOffsetX: -45
    }
});

Edit

Loading an image at page load should be possible with this line of code:

$("a[data-caption='" + $(location).attr("hash").substr(1) + "']").trigger("click");

It triggers the click event for the appropriate anchor (like if you click it with your mouse).

这篇关于在URL栏中显示灯箱的每个图片的特定锚点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆