2010-08-05 46 views
2

我有一個動態創建照片庫鏈接的功能。當點擊縮略圖時,該功能還可以生成更大的圖像作爲div的背景圖像。我想要做的是第三個事件,如果用戶單擊div中的放大圖像,jQuery Fancybox會加載div中顯示的更大版本的圖像。問題是,我正在使用的錨標記的鏈接是動態創建的,我知道Fancybox在DOM準備好時解析HTML ...不幸的是,我的函數通過爲完整大小的圖像添加錨標記來更改DOM 。我需要的幫助是使用Fancybox的選項來指定插件的href屬性。對不起,這是很囉嗦...這是代碼。動態鏈接和jQuery Lightbox問題:在Lightbox中加載圖片...完全難住!

的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> 

隨後的CSS:

#photolarge { 
width: 590px; 
height: 400px; 
margin-left: 7px; 
border: 2px solid; 
background: none;} 

#phototable { 
width: 590px; 
height: 300px; 
border: 2px solid; 
margin: 10px 0 0 7px;} 

#phototable img { 
cursor: pointer;} 

#phototable ul { 
list-style: none; 
display: inline;} 

#phototable li { 
padding-left: 10px;} 

#lightboxlink { 
display: block; 
height: 100%; 
width: 100%;} 

任何幫助將不勝感激!

回答

3

可以使用.live()事件處理程序,並.triggerHandler()立即打開收藏夾,如下所示:

$("#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類的增加。無論是新的還是新的綁定,我們都需要觸發click處理程序,這是fancybox要打開的處理程序。

+0

我應該提到我試過.live()。 謝謝,但我仍然遇到了在創建鏈接時在新窗口中加載圖像的問題。 – 2010-08-06 00:05:49

+0

@Christian - 哦woops,你需要一個預防默認,一個時刻 – 2010-08-06 00:11:08

+0

@Christian - 我更新了這個,雖然fancybox *應該*已經照顧它。 – 2010-08-06 00:12:03