2011-11-23 26 views
0

加載時,Jquery停止在Asp.net控件中工作。 我使用的更新面板和裏面一個佔位符當在ASP.net/C#應用程序中通過部分回傳

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="LinkButton1" EventName="Click"/> 
    </Triggers> 
    <ContentTemplate> 
     <asp:PlaceHolder ID="PlaceHolder1" runat="server"> 
     </asp:PlaceHolder> 
    </ContentTemplate> 
</asp:UpdatePanel> 

當我點擊LinkBut​​ton1我加載佔位符的用戶控件動態加載控件:

protected void LinkButton1_Click(object sender, EventArgs e) 
{ 
    PlaceHolder1.Controls.Clear(); 
    MyControl C; 
    C = (MyControl1)LoadControl("Controls/MyControl.ascx"); 
    PlaceHolder1.Controls.Add(C); 
} 

所有的控制我已正確加載。

但問題是這樣的:

我有一個使用Javascript和jQuery來創建一個下拉動畫,當我點擊一個div控制。通過一個普通回傳 在頁面上加載時,但是當我使用部分回發加載它的更新面板 這種控制工作正常,它負載,但的JavaScript停止工作(沒有更多的下拉動畫和其他的東西)

如何通過部分回傳加載控件時使它們工作?

回答

0

我想你的動畫是在$(document).ready()事件中註冊的。然後在所有div上註冊特定的動畫。 如果你回發到你的更新面板,那麼文件就緒事件不會被觸發,所以動畫被註冊。您應該在更新面板中回發後再次自行完成。

+0

謝謝你的迴應。是的,它在$(document).ready()事件中註冊。你能告訴我如何自己做?謝謝 – Youssef

+0

您在$(document).ready()事件中執行的功能,如果在更新面板重新加載後調用。我不太清楚你怎麼能這樣做最好的方式.. –

+0

我做了這個在控制中使用一個隱藏的圖像,並從onload事件調用JavaScript函數:onload =「initSearchItems()」。謝謝你的幫助 – Youssef

0

我的猜測是你的動畫是在dom準備好的情況下執行的。因此,您的初始頁面加載會在下拉菜單中設置所需的動畫。

通過部分回傳它的唯一被加載的部分,所以動畫未設置。因爲它不是最初準備好的Dom的一部分。

您將需要觸發一些JavaScript返回該部分帖子回來運行相同的功能,你可能必須設置動畫。

編輯

How to control which JavaScript gets run after UpdatePanel partial postback endRequest?

應該幫助你執行JavaScript更新面板返回之後。

1

我認爲使用Jquery「Live」可能是您尋找的答案,它將監視DOM中的更改。 (「{YOURQUERY}」)。live(「click」,function(){alert(「Goodbye!」);});}};}};

查看jquery文檔以獲取更多信息。

0

當您執行.bind()函數時,您只需在給定時刻連接DOM中存在的元素(即執行.bind()時)的事件。您通過部分回發異步加載的控件不存在於document.ready中,這就是您的事件不起作用的原因。

如果您使用的是jQuery 1,則應該使用live或委託,或者甚至更好。7或更高版本您應該使用新的on-function

$(function(){ 
    $('placeholder-selector').on('click' , 'your-clickable-selector', function(){ 
     //do your animation here 
    }); 
}); 
相關問題