2012-11-06 52 views
0

我在使用jQuery顯示隱藏div的回發後出現問題。有人建議我將可見度值存儲在隱藏字段中,但我遇到了一些問題。繼承人的代碼:回發後jQuery顯示/隱藏不起作用

<script type="text/javascript"> 
$(document).ready(function() { 
    $(".slidingDiv").hide(); 
    $(".show_hide").show(); 
    $("goBtn").click(function() { 
     $(".slidingDiv").slideToggle(); 
    }); 
    return false; 
}); 
</script> 

<div class="create"> 
      <asp:TextBox ID="createTextbox" runat="server" Width="350px" Height="22px"></asp:TextBox> 
      <asp:ImageButton ID="goBtn" ImageUrl="img/goBtn.gif" runat="server" BorderStyle="None" onclick="createButton_Click"/> 
     </div> 
<div class="slidingDiv" runat="server"> 
     <asp:HiddenField ID="IsCreatePostbackVisible" runat="server" Visible="False" value="false"/> 
      <asp:Literal ID="Literal1" runat="server"></asp:Literal><br /> 
     </div> 

代碼隱藏:

protected void createButton_Click(object sender, ImageClickEventArgs e) 
    { 
     string randAlias = Base62Random(); 
     string aliasInput = createTextbox.Text; 
     DateTime date = DateTime.Now; 
     DateTime endDate = (DateTime.Now.AddYears(5)); 
     string UserID = HttpContext.Current.User.Identity.Name.ToUpper(); 
     string aliasType = "alias"; 
     if (aliasInput == "") 
     { 
      ClientScript.RegisterClientScriptBlock(GetType(), "Javascript", "<script>alert('You must enter a valid URL')</script>"); 
     } 
     else 
     { 
      Literal1.Text = "<a href=http://go/" + randAlias + ">go/" + randAlias; 
     } 


     using (DataClasses1DataContext dc1 = new DataClasses1DataContext()) 
     { 
      tblData tblData = new tblData(); 
      tblData.ALIAS_ID = randAlias; 
      tblData.URL = aliasInput; 
      tblData.START = date; 
      tblData.END = endDate; 
      tblData.USER = UserID; 
      tblData.TYPE = aliasType; 
      dc1.tblDatas.InsertOnSubmit(tblData); 
      dc1.SubmitChanges(); 
     } 
    } 
+1

設置爲'goBtn'不正常的活動?如果是,請設置一個'#'因爲是'id' –

+0

我在添加#後得到相同的行爲。似乎在回發後,div通過$(「。slidingDiv」)重新隱藏。 – gp80586

+0

任何這個HTML元素都是在回調操作中創建的? –

回答

0

這裏是我最後的答案:

<script type="text/javascript"> 
    $(document).ready(function() { 
    $(".slidingDiv").hide(); 
    $(".show_hide").show(); 
    $("#goBtn").click(function() { 
     $(".slidingDiv").slideToggle(); 
    }) 
    if (isPostBack){$(".slidingDiv").show();} 
}); 
</script> 

代碼背後:

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (IsPostBack) 
     {ClientScript.RegisterClientScriptBlock(GetType(), "IsPostBack", "var isPostBack = true;", true);} 
     else 
     {ClientScript.RegisterClientScriptBlock(GetType(), "IsPostBack", "var isPostBack = false;", true);} 
    } 
0

您可能需要 '重新登記' click事件到您的按鈕。

我在過去有類似的問題隱藏和回發。

如果你定義一個函數:

function ClickListener() { 
    $("#goBtn").click(function() { 
      $(".slidingDiv").slideToggle(); 
      ClickListener(); 
     }); 
    } 

然後希望它會工作一次以上。

編輯:我也遇到過將document.ready()更改爲document.live()已解決此問題的類似問題。在這裏看到:jQuery difference between live() and ready()?

+0

切換到live()沒有工作,並拋出了一個jQuery錯誤。該div也不再隱藏。 網頁錯誤的詳細信息用戶代理:Mozilla/4.0(兼容; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET4.0C; .NET4 .0E; .NET CLR 3.5.30729)時間戳:Tue,2012年11月6日17:00:35 UTC消息:'undefined'爲空或不是對象行:2764 char:3代碼:0 URI:http:// ajax .googleapis.com/AJAX /庫/ jquery的/ 1.3.2 /的jquery.js – gp80586