[英]div click not working after showing div by Jquery slideToggle and run server code by hidden button in updatepanel
我正在使用jQuery slideToggle顯示/隱藏div
當div打開時,我調用按鈕單擊事件以運行服務器代碼
div應該在updatepanel中-以避免在頁面中完全回發
javascript:
$(document).ready(
function () {
$(".header").click(function () {
var $header = $(this),
$span = $header.find(">:first-child"),
//getting the next element
$content = $header.next();
//open up the content needed
$content.slideToggle(500);
if (this.id == "ContentPlaceHolder1_AAA_divheader") {
document.getElementById('<%= btnPostback.ClientID %>').click();
}
});
});
<asp:UpdatePanel ID="up1" runat="server" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnPostback" EventName="Click" />
</Triggers>
<ContentTemplate>
<div id="divheader" runat="server" class="header">
<span class="ProName">
<asp:Label ID="Label8" Text="<i class='fa fa-plus-square fa-lg'></i>" runat="server"></asp:Label>
<asp:Label ID="Label9" runat="server">Title</asp:Label>
</span>
</div>
<div id="divcontent" runat="server" class="content">
<asp:Button runat="server" ID="btnPostback" Style="display: none" OnClick="LoadData" />
<div id="divIfA" runat="server">
</div>
<div id="divifB" runat="server">
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
C#:
public void LoadData(object sender, EventArgs e)
{
if (Session["IfOpen"] == null)
Session["IfOpen"] = "1";
else
if (Session["IfOpen"].ToString() == "1")
Session["IfOpen"] = "0";
else
Session["IfOpen"] = "1";
if (ID > 0 && Session["IfOpen"].ToString() == "1")
{
//run my code to create user control in the divIfA/divIfB
}
if (Session["IfOpen"].ToString() == "1")
{
//The (partial) postback closed the div so I open It again
ScriptManager.RegisterStartupScript(up1, up1.GetType(), "MyFunction", " $('#ContentPlaceHolder1_AAA_divcontent').slideToggle(500);", true);
}
}
問題:
運行此代碼時,div會在第一次單擊時打開,然后單擊事件根本不會觸發 (而且div的內容也變得不可單擊)
所以,我想與 btnPostback點擊, 無需在UpdatePanel,一切運作良好(但頁面刷新)
我嘗試使用 UpdatePanel, 而不調用btnPostback Click,div正常顯示/隱藏(當然沒有來自服務器的數據)
我還需要UpdatePanel和服務器代碼。 有誰知道為什么會這樣?
<asp:UpdatePanel ID="up1" runat="server" UpdateMode="conditional">
<ContentTemplate>
<div id="divheader" runat="server" class="header" onclick="headerClick(this);">
<span class="ProName">
<asp:Label ID="Label8" Text="<i class='fa fa-plus-square fa-lg'></i>" runat="server"></asp:Label>
<asp:Label ID="Label9" runat="server">Title</asp:Label>
</span>
</div>
<div id="divcontent" runat="server" class="content">
<asp:Button runat="server" ID="btnPostback" CssClass="hidden-btn" OnClick="LoadData" />
<div id="divIfA" runat="server">
</div>
<div id="divifB" runat="server">
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
Javascript:
function headerClick(obj)
{
var $header =$(obj).val();
$span = $header.find(">:first-child"),
//getting the next element
$content = $header.next();
//open up the content needed
$content.slideToggle(500);
if (obj.id == "ContentPlaceHolder1_AAA_divheader") {
document.getElementById('<%= btnPostback.ClientID %>').click();
}
}
在這里,我在Div上添加了onClick方法,只需替換並嘗試,它就可以正常工作了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.