使用 fancybox 灯箱展示后增加多个图像的视图
Incrementing views of several images after show with fancybox lightbox
我的 objective 是在显示带有 fancybox 3 的图像时增加视图。
目前我有 html、
function counter(itemId) {
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
}
}
xmlhttp.open("GET","gallery2/counter.php?itemId="+itemId,true);
xmlhttp.send();
}
<a id="139494" onclick="counter(139494);" href="/gallery2/gallery/d/139496-4/2018-03-03-112534-Lisboa-PT.jpg?g2_GALLERYSID=6d16e7155d771b4801e3bf941b22d555" class="fancybox-download" data-caption="03/03/2018 - Tour de Belém - Lisbonne 2018 - 5 vue(s) - ID 139494" title="03/03/2018 - Tour de Belém - Lisbonne 2018 - 5 vue(s) - ID 139494" data-fancybox="fancybox">
<img src="/gallery2/gallery/d/139495-3/2018-03-03-112534-Lisboa-PT.jpg?g2_GALLERYSID=6d16e7155d771b4801e3bf941b22d555" width="180" height="120" alt="Tour de Belém">
</a>
javascript + php 在 onclick 事件上处理一张图片。我使用图像的 ID 来增加数据库中的视图字段。
问题是当我用 fancybox 打开一组图片时,它只对第一张图片有效。所以我需要一个 afterShow 事件。问题是:如何在事件中将 ID 传递给我的函数计数器?想法是在 javascript 中获取我的 A 元素的 ID 属性...我已经尝试过了,但它不起作用
afterShow : function(){
var itemId = $('.fancybox-download').attr('id', current.src);
counter(itemId);
},
你们能帮帮我吗?看起来很简单,但是我在 javascript...
方面不够熟练
谢谢!
大卫
实际问题似乎是 - "How to access clicked element",因为您可以从 link 中获取 ID。
这里有两个示例:
1) 从代码中的任意位置 -
$.fancybox.getInstance().current.opts.$orig.attr('id')
此处$.fancybox.getInstance()
returns当前活动的实例; current
是当前幻灯片对象; opts.$orig
- 原始元素(您的 link;可以自定义,因此在选项下)
2) 从回调中:
afterShow : function( instance, current ){
var itemId = current.opts.$orig.attr('id');
counter(itemId);
}
任何回调的第一个参数是对实例的引用,第二个是 current
除了 onInit
之外的所有回调的幻灯片对象(好吧,因为此时它还没有创建)
我的 objective 是在显示带有 fancybox 3 的图像时增加视图。
目前我有 html、
function counter(itemId) {
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
}
}
xmlhttp.open("GET","gallery2/counter.php?itemId="+itemId,true);
xmlhttp.send();
}
<a id="139494" onclick="counter(139494);" href="/gallery2/gallery/d/139496-4/2018-03-03-112534-Lisboa-PT.jpg?g2_GALLERYSID=6d16e7155d771b4801e3bf941b22d555" class="fancybox-download" data-caption="03/03/2018 - Tour de Belém - Lisbonne 2018 - 5 vue(s) - ID 139494" title="03/03/2018 - Tour de Belém - Lisbonne 2018 - 5 vue(s) - ID 139494" data-fancybox="fancybox">
<img src="/gallery2/gallery/d/139495-3/2018-03-03-112534-Lisboa-PT.jpg?g2_GALLERYSID=6d16e7155d771b4801e3bf941b22d555" width="180" height="120" alt="Tour de Belém">
</a>
javascript + php 在 onclick 事件上处理一张图片。我使用图像的 ID 来增加数据库中的视图字段。
问题是当我用 fancybox 打开一组图片时,它只对第一张图片有效。所以我需要一个 afterShow 事件。问题是:如何在事件中将 ID 传递给我的函数计数器?想法是在 javascript 中获取我的 A 元素的 ID 属性...我已经尝试过了,但它不起作用
afterShow : function(){
var itemId = $('.fancybox-download').attr('id', current.src);
counter(itemId);
},
你们能帮帮我吗?看起来很简单,但是我在 javascript...
方面不够熟练谢谢!
大卫
实际问题似乎是 - "How to access clicked element",因为您可以从 link 中获取 ID。
这里有两个示例:
1) 从代码中的任意位置 -
$.fancybox.getInstance().current.opts.$orig.attr('id')
此处$.fancybox.getInstance()
returns当前活动的实例; current
是当前幻灯片对象; opts.$orig
- 原始元素(您的 link;可以自定义,因此在选项下)
2) 从回调中:
afterShow : function( instance, current ){
var itemId = current.opts.$orig.attr('id');
counter(itemId);
}
任何回调的第一个参数是对实例的引用,第二个是 current
除了 onInit
之外的所有回调的幻灯片对象(好吧,因为此时它还没有创建)