Jquery .委托与fancybox结合使用

Jquery .委托与fancybox结合使用,jquery,delegates,fancybox,Jquery,Delegates,Fancybox,我对fancybox有一个问题,我想将其应用于div中的图像,它正在使用.replaceWith动态更改其内容。代码如下所示: $(document).load('fancybox', function() { $('.various4').fancybox({ 'width' : 800, 'height' : 750, 'autoSca

我对fancybox有一个问题,我想将其应用于div中的图像,它正在使用.replaceWith动态更改其内容。代码如下所示:

$(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被解读为一个事件。我将研究不同的解决方案,没错,最后一个似乎是最合理的。非常感谢你!