我想要一个用特定图片打开fancybox rel-group的按钮。我不太确定这是否有效,但我会试一试。我的问题是,如果用户点击链接,我想执行jQuery。这是我的代码
var js = "jQuery.fancybox.pos("+currentImage+");";
// create a new function from the "js" string
var newclick = new Function(js);
jQuery("a.enlarge").click(newclick);
代码基于this answer。我希望
jQuery.fancybox.pos(2)
有效。但目前我没有让点击功能起作用。我做错了什么?
修改
我目前的设置:
<script type="text/javascript">
var currentImage = 0;
function getCurrImage(carousel, state){
currentImage = carousel.first-1;
jQuery("a.enlarge").click(function() {
alert(currentImage);
jQuery.fancybox.pos(currentImage);
});
}
jQuery.noConflict();
jQuery(document).ready(function() {
jQuery('#mycarousel').jcarousel({
scroll:1,
'itemLoadCallback': getCurrImage
});
jQuery('a[rel=example_group]').fancybox({
'transitionIn': 'none',
'transitionOut': 'none'
});
});
</script>
jQuery.fancybox.pos(currentImage);
不起作用。 currentImage
似乎是正确的,但如果单击按钮4次,警报会弹出4次。这意味着:
点击1:currentImage = 0
点击2:currentImage = 1,currentImage = 1
点击3:currentImage = 2,currentImage = 2,currentImage = 2
单击4:currentImage = 3,currentImage = 3,currentImage = 3,currentImage = 3
更新
新尝试:
<script type="text/javascript">
var currentImage = 0;
function openfancy(){
jQuery.fancybox.pos(currentImage);
}
function getCurrImage(carousel, state){
currentImage = carousel.first-1;
jQuery("a.enlarge").unbind("click", openfancy);
jQuery("a.enlarge").bind("click", openfancy);
}
jQuery.noConflict();
jQuery(document).ready(function() {
jQuery('#mycarousel').jcarousel({
scroll:1,
'itemLoadCallback': getCurrImage
});
jQuery('a[rel=example_group]').fancybox({
'transitionIn': 'none',
'transitionOut': 'none'
});
});
</script>
jQuery.fancybox.pos(currentImage);
仍无效。有机会吗?也许是因为我在那个页面上有多个fancybox?我也尝试使用jQuery('.fancybox').fancybox.pos(currentImage);
,但我收到错误消息,告知它不是函数。
答案 0 :(得分:2)
pos
功能从未奏效。所以我采用了删除答案的想法来使用点击功能。如果用户点击我的链接,它应该模拟图库中图片的点击。
<script type="text/javascript">
var currentImage = 0;
function getCurrImage(carousel, state){
currentImage = carousel.first-1;
}
/*jQuery.noConflict();*/
jQuery(document).ready(function() {
jQuery('#fancycarousel').jcarousel({
scroll:1,
'itemLoadCallback': getCurrImage
});
jQuery('a[rel=example_group]').fancybox({
'transitionIn': 'none',
'transitionOut': 'none'
});
jQuery('#enlarge').click(function(){
jQuery(".jcarousel-item").eq(currentImage).children("a").click();
});
});
</script>
我需要几个小时来解决这个问题!
答案 1 :(得分:0)
使用匿名函数:
jQuery("a.enlarge").click(function() {
jQuery.fancybox.pos(currentImage);
});
我不确定currentImage
是什么。
尝试此代码:
var currentImage = 0;
$('#your_carousel').jcarousel({
itemLoadCallback: function(carousel, state) {
currentImage = carousel.first;
}
});