Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 动态链接和jQuery Lightbox问题:在Lightbox中加载图像…完全被难住了!_Javascript_Jquery_Lightbox - Fatal编程技术网

Javascript 动态链接和jQuery Lightbox问题:在Lightbox中加载图像…完全被难住了!

Javascript 动态链接和jQuery Lightbox问题:在Lightbox中加载图像…完全被难住了!,javascript,jquery,lightbox,Javascript,Jquery,Lightbox,我有一个为照片库动态创建链接的功能。当单击和缩略图时,该函数还会生成一个较大的图像作为div的背景图像。我想做的是有第三个事件,如果用户单击div中放大的图像,jQuery Fancybox将加载div中显示的图像的更大版本。问题是,我正在使用的锚标记的链接是动态创建的,我知道Fancybox会在DOM就绪时解析HTML……不幸的是,我的函数通过为全尺寸图像添加锚定标记来更改DOM。我需要的帮助是使用Fancybox的选项为插件指定href属性。我很抱歉说的太多了…这是密码 jQuery: fu

我有一个为照片库动态创建链接的功能。当单击和缩略图时,该函数还会生成一个较大的图像作为div的背景图像。我想做的是有第三个事件,如果用户单击div中放大的图像,jQuery Fancybox将加载div中显示的图像的更大版本。问题是,我正在使用的锚标记的链接是动态创建的,我知道Fancybox会在DOM就绪时解析HTML……不幸的是,我的函数通过为全尺寸图像添加锚定标记来更改DOM。我需要的帮助是使用Fancybox的选项为插件指定href属性。我很抱歉说的太多了…这是密码

jQuery:

function gallery(picid, picnum){
var ext = 'jpg';
var fullSize = 'imgs/'+picid+'_full.'+ext;
$('#photolarge').css("background", 'url(imgs/'+picid+'_large.'+ext+') no-repeat');
$('#photolarge a').attr(
    {   href: fullSize
        //rel: 'lightbox',  
    }
    );

$("#lightboxlink").click(function(){
    $('#lightboxlink').fancybox({
        'autoDimensions' : false,
        'width' : 'auto',
        'height' : 'auto',
        'href' : fullSize
        });


    });




return false;
}

HTML代码段

<div id="photolarge">
   <a id="lightboxlink" href="#"></a>
</div>
        <div id="phototable">
            <ul id="photorow1">
                <li><a onclick="gallery('bigsun',1)"><img id="sun" src="imgs/bigsun.jpg" /></a></li>
            </ul>
        </div>  
任何帮助都将不胜感激

您可以使用事件处理程序,并立即打开lightbox,如下所示:

$("#lightboxlink").live('click', function(e){
    $(this).filter(':not(.fb)').fancybox({
        'autoDimensions' : false,
        'width' : 'auto',
        'height' : 'auto',
        'href' : fullSize
     }).addClass('fb');
     $(this).triggerHandler('click');
     e.preventDefault(); //prevent opening in new window
});

它在链接上运行
.fancybox()
,但前提是我们还没有运行它,我们正在通过添加
.fb
类来跟踪它。无论是新绑定还是新绑定,我们都需要触发
单击
处理程序,这是
fancybox
要打开的内容。

我应该提到我尝试了.live()。谢谢,但我仍然遇到这样一个问题:创建的链接在新窗口中加载图像。@Christian-oh-woops,您需要一个防止默认值,一个moment@Christian-我对此进行了更新,不过fancybox应该已经在处理它了。@Nick Hmmm…图像仍在新窗口中加载。您的代码很有意义,这甚至更奇怪(尽管我对javascript仍然很业余)。我的文件的另一部分肯定有错误。@Christian-你的控制台有错误吗?JavaScript错误意味着默认行为将接管…这就是您看到的它听起来的样子。
$("#lightboxlink").live('click', function(e){
    $(this).filter(':not(.fb)').fancybox({
        'autoDimensions' : false,
        'width' : 'auto',
        'height' : 'auto',
        'href' : fullSize
     }).addClass('fb');
     $(this).triggerHandler('click');
     e.preventDefault(); //prevent opening in new window
});