簡體   English   中英

回發后使當前的Jquery手風琴窗格保持打開狀態

[英]Keep current Jquery accordion pane open after postback

又是我。 這次,我試圖在回發后使當前的JQuery手風琴窗格保持打開狀態。 我在這里按照以下示例操作: 在ASP.NET回發后保持當前的jQuery手風琴窗格打開? 除了幾個我見過的其他人。 我仍然無法使它正常工作,與我的唯一不同之處在於,我通過背后的代碼來制定腳本並將其推送給客戶端。

這就是我所擁有的:

    public static string getAccordionContainerScript(string container)
    {
        return @"$(document).ready(function() { var activeIndex = parseInt($('#<%=accordionActiveIndex.ClientID %>').val()); $(" + '"' + '#' + container + '"' + ").accordion({collapsible: true, heightStyle: \"content\", navigation: true,change: function (event, ui) { var index = $(this).accordion(\"option\", \"active\");$('#<%=accordionActiveIndex.ClientID %>').val(index);} }).show(); })";
    }

我這樣做的原因是由於我重復使用代碼塊,因為在整個應用程序中我有幾個相同的控件。

另外,當我使用標記顯示表達式(<%= =>)時,它將引發客戶端錯誤,而其他客戶端控件不起作用,例如我的模態等。

客戶端錯誤是:未捕獲的錯誤:語法錯誤,無法識別的表達式:#<%= accordionActiveIndex.ClientID%>

我可能做錯了什么?

您完全按照錯誤消息的意思做錯了:

您正在向響應發送字符串<%=accordionActiveIndex.ClientID %> 該字符串必須由WebForms引擎處理,因此它必須在aspx頁面中。 瀏覽器不知道如何處理該代碼,這就是為什么瀏覽器引發該錯誤的原因。

恐怕您需要將accordionActiveIndex.ClientID值傳遞給該函數,因此您可以執行類似的操作(請注意新參數,並且忽略字符串中的換行符。為便於閱讀,我添加了它):

public static string getAccordionContainerScript(string container, string clientId)
{
    return string.Format(@"$(document).ready(function() { var activeIndex = parseInt($('#<%=accordionActiveIndex.ClientID %>').val()); 
                           $(" + '"' + '#' + container + '"' + ").accordion({collapsible: true, heightStyle: \"content\", navigation: true,change: function (event, ui) { var index = $(this).accordion(\"option\", \"active\");
                           // pay attention here
                           $('#{0}').val(index);} }).show(); }), clientId);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM