2011-02-07 75 views
0

我有6個縮略圖作爲asp:imagebutton實例。這些被視爲在包含asp:image控件的頁面上的觸發器asp:updatepanel控件。

當用戶點擊縮略圖時,asp:updatepanel的圖像控件中的圖像變爲點擊的縮略圖圖像。
用戶也可以通過點擊放大按鈕再次放大圖像(這可以運行lightbox函數)。這工作正常。

問題
的問題是,擴大在頁面加載時,但是當用戶選擇縮略圖,然後嘗試工作。該方法(lightbox)不起作用。

我有類似的問題javascript函數和asp:updatepanel。有沒有其他人面臨類似的問題?如果是這樣,我該如何解決這個問題?燈箱不工作在updatepanel + c#

+1

它說什麼?問題在哪裏? – 2011-02-07 08:06:11

回答

0

以下JavaScript被defalut之一,它做工精細沒有asp:UpdatePanel

<script type="text/javascript"> 
    $(function() 
    { 
    $('#gallery a').lightBox(); 
    }); 
    </script> 

,但它不與asp:UpdatePanel工作,所以有需要調用在頁面加載功能,它工作正常。

<script type="text/javascript"> 
    function pageLoad(sender, args) 
    { 
    $('#gallery a').lightBox(); 
    } 
</script> 

謝謝你們幫忙。

0

只有在第一次加載頁面時,纔會執行一個$函數(這是一個DOM就緒函數)。 任何進一步的AJAX調用(這是一個部分加載/渲染)不會觸發DOM就緒功能。這是原因,你無法得到它的工作。

在你的情況下,這個函數會在第一次加載頁面時將你的錨點鏈接(按鈕)與Lighbox行爲綁定。所以,它的工作。下次刷新更新面板(這是部分渲染)時,該按鈕不會再次綁定到lightbox。除非達到這種約束,否則不會顯示。

通常在這種情況下使用腳本控件在每次加載控件時觸發事件。 如果您在這裏沒有關於隔離相關對象的問題,像pageLoad這樣的解決方案仍然很好。

0

解決:

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> 
<script src="../slimbox-2.05/slimbox2.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 
    function pageLoad() { 
     jQuery(function ($) { 
      $("a[rel^='lightbox']").slimbox({/* Put custom options here */ 
      }, null, function (el) { 
       return (this == el) || ((this.rel.length > 8) && (this.rel == el.rel)); 
      }); 
     }); 
    } 
</script>