Jquery .委托与fancybox结合使用
我对fancybox有一个问题,我想将其应用于div中的图像,它正在使用.replaceWith动态更改其内容。代码如下所示:Jquery .委托与fancybox结合使用,jquery,delegates,fancybox,Jquery,Delegates,Fancybox,我对fancybox有一个问题,我想将其应用于div中的图像,它正在使用.replaceWith动态更改其内容。代码如下所示: $(document).load('fancybox', function() { $('.various4').fancybox({ 'width' : 800, 'height' : 750, 'autoSca
$(document).load('fancybox', function() {
$('.various4').fancybox({
'width' : 800,
'height' : 750,
'autoScale' : false,
'transitionIn' : 'none',
'transitionOut' : 'none',
'type' : 'iframe'
});
});
这适用于以下HTML:
<a class="various4" href="http://xy//index.html"><img height="400" width="600" src="bg.jpg" class="hoverbild" /></a>
这是毫无问题的。但是现在,如果您想让fancybox部件进行委派,它根本不起作用。没有错误警告,只是被忽略了
$(document).delegate('.various4', 'fancybox', function(){
$('.various4').fancybox({
'width' : 800,
'height' : 750,
'autoScale' : false,
'transitionIn' : 'none',
'transitionOut' : 'none',
'type' : 'iframe'
});
});
我错过了什么?我试着用.生活来代替,但这没什么区别
提前感谢您的帮助。函数的
delegate()
的第二个参数和live()
函数的第一个参数指定要将函数绑定到的事件类型<代码>'fancybox'不是一个事件,因此它被忽略
您可以执行以下操作:
$('.various4').live('hover', function() {
$(this).fancybox();
});
这应该是可行的,因为在用户单击图像之前,他们必须将鼠标悬停在图像上,然后在该图像上调用fancybox()
或者,您可以创建自己的事件,并在运行replaceWith()
后创建的每个图像上调用它
在replaceWith()之后
只需执行如下操作
$('.various4').trigger('apply_fancybox');
然后呢,
$('.various4').live('apply_fancybox', function() {
$(this).fancybox();
});
对于不是使用replaceWith()
动态创建的任何初始图像,您可能需要触发此事件
还有另一种方法,也是最简单的方法,为什么不在调用
replaceWith()
之后使用$('.various4')。fancybox()
?调用delegate()
函数的第二个参数和live()
函数的第一个参数指定要将函数绑定到的事件类型<代码>'fancybox'不是一个事件,因此它被忽略
您可以执行以下操作:
$('.various4').live('hover', function() {
$(this).fancybox();
});
这应该是可行的,因为在用户单击图像之前,他们必须将鼠标悬停在图像上,然后在该图像上调用fancybox()
或者,您可以创建自己的事件,并在运行replaceWith()
后创建的每个图像上调用它
在replaceWith()之后
只需执行如下操作
$('.various4').trigger('apply_fancybox');
然后呢,
$('.various4').live('apply_fancybox', function() {
$(this).fancybox();
});
对于不是使用replaceWith()
动态创建的任何初始图像,您可能需要触发此事件
还有另一种方法,最简单的一种,为什么不在调用replaceWith()
?$('selector')后使用$('.various4').fancybox()
绑定打开框作为单击处理程序,如果您想手动打开fancybox,请使用$.fancybox()
如果您要打开图像,则该选项适用于内联iframe。请使用:
$(document).delegate('.various4', 'click', function() {
$.fancybox($(this).attr('href'), {type:'image'});
return false;
});
$('selector').fancybox()
绑定作为单击处理程序打开该框,如果要手动打开fancybox,请使用$.fancybox()
如果您要打开图像,则该选项适用于内联iframe。请使用:
$(document).delegate('.various4', 'click', function() {
$.fancybox($(this).attr('href'), {type:'image'});
return false;
});
我懂了!我认为fancybox被解读为一个事件。我将研究不同的解决方案,没错,最后一个似乎是最合理的。非常感谢你!我懂了!我认为fancybox被解读为一个事件。我将研究不同的解决方案,没错,最后一个似乎是最合理的。非常感谢你!