2013-10-19 68 views
0

我有一個非常基本的測試asp.net web應用程序。有一個彈出jQuery對話框的。在這個對話框中還有另外一個,使得<div>標籤可見,並且在此<div>標籤中有第三個。到目前爲止,一切都很好。 現在根據我的代碼第三個按鈕應該彈出第二個jQuery對話框,但是這從來沒有發生過。我在哪裏弄錯了?第三個asp.net按鈕沒有打開jQuery對話框

這裏是我的aspx代碼:

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"></asp:ScriptManager> 

    <asp:Button ID="btn" runat="server" Text="btn" /> 
    <div id="div1"> 
     <asp:UpdatePanel ID="UpdatePanel2" runat="server"> 
      <ContentTemplate> 
       <table> 
        <tr> 
         <td> 
          <asp:Button ID="btn1" runat="server" Text="btn1" OnClick="btn1_Click" /> 
         </td> 
         <td> 
          <div id="div2" runat="server" visible="false"> 
           <asp:Button ID="btn2" runat="server" Text="btn2" /> 
          </div> 
         </td> 
        </tr> 
       </table> 
      </ContentTemplate> 
     </asp:UpdatePanel> 
    </div> 

    <div id="div3" style="display:none"> 
     <h1>test</h1> 
    </div> 

這裏是jQuery的代碼:

<script type="text/javascript"> 
     var dialogOpts = { 
      resizable: false, 
      bgiframe: true, 
      autoOpen: false, 
      width: "710px" 
     }; 

     $('#div3').dialog(dialogOpts).parent().appendTo($("#form1"));; 
     $(function() { 
      $("#div3").dialog({ 
       maxWidth: 1050, 
       maxHeight: 534, 
       width: 1050, 
       height: 534, 
       resizable: false, 
       autoOpen: false, 
       buttons: { 
        Cancel: function() { 
         $(this).dialog("close"); 
        } 
       } 
      }); 

      $("#btn2").click(function() { 
       $("#div3").dialog("open"); 
       return false 
      }); 
     }); 
    </script> 
    <script type="text/javascript"> 
     var dialogOpts = { 
      resizable: false, 
      bgiframe: true, 
      autoOpen: false, 
      width: "710px" 
     }; 

     $('#div1').dialog(dialogOpts).parent().appendTo($("#form1"));; 
     $(function() { 
      $("#div1").dialog({ 
       maxWidth: 1050, 
       maxHeight: 534, 
       width: 1050, 
       height: 534, 
       resizable: false, 
       autoOpen: false, 
       buttons: { 
        Cancel: function() { 
         $(this).dialog("close"); 
        } 
       } 
      }); 

      $("#btn").click(function() { 
       $("#div1").dialog("open"); 
       return false 
      }); 
     }); 
    </script> 

它被放置在體內,到目前爲止,只有第一個jQuery的彈出。 這是我的C#的功能,使得第二<div>標籤可見:

protected void btn1_Click(object sender, EventArgs e) 
    { 
     div2.Visible = true; 
    } 

回答

2

visible = false

實質上阻止元素從渲染。如果您爲未渲染的(未渲染的,不顯示:無,可見性:隱藏,您的按鈕不在物理上駐留在頁面中)註冊onclick事件,onclick事件根本不會註冊任何內容。後顯示您在更新面板按鈕,有什麼要對點擊運行,因爲沒有點擊操作已經設定(按鈕沒有在

$("#btn2").click(function() { 
      $("#div3").dialog("open"); 
      return false 
     }); 

時存在)

+0

好吧,我看到。刪除'visible = false'似乎解決了打開第二個jQuery對話框的問題。但是我怎麼才能讓第二個div只在'btn2'上點擊? – Apostrofix

+1

您可以將css屬性顯示設置爲none。另一種方法是將點擊處理的添加轉換爲一個函數,然後將該函數分配給OnClientClick。 – netchkin

+0

你能幫我一些代碼嗎?設置'style =「display:none」'不起作用。 – Apostrofix

相關問題