2012-03-25 166 views
2

我試圖在單擊按鈕時隱藏/顯示/切換div。我使用ASP.NET,一切都在ASP:Datalist中。在按鈕上顯示/隱藏某些div,並帶有JQuery按鈕單擊

我可以正確顯示或隱藏div。然而,它會打開所有的div,而不是隻選擇按鈕的那個div。該div正試圖顯示/隱藏是。內容

如何才能打開該按鈕所屬的div?

的jsfiddle - 這裏的問題的一個例子http://jsfiddle.net/kMEre/

腳本:

<script type="text/javascript"> 
    jQuery(document).ready(function() { 
     jQuery(".content").hide(); 
    }); 
</script> 
<script type="text/javascript"> 
    jQuery(document).ready(function() { 
     jQuery('#man').live('click', function (event) { 
      jQuery('.content').toggle('show'); 
     }); 
    }); 
</script> 

DataList控件(ASP.NET)

<asp:DataList runat="server" id="dgQuestionnaire" DataKeyField="QuestionID" > 
    <ItemTemplate> 
     <div class="question_box"> 
      <p class="small_bold">Question <asp:Label ID="lblOrder" runat="server" Text='<%# Container.ItemIndex + 1 %>'></asp:Label></p> 
      <div class="Questions"> 
       <div class="heading"> 
        <asp:HiddenField ID="hiddenQuestionID" runat="server" Value='<%# Eval("QuestionID") %>' /> 
        <asp:TextBox runat="server" ID="tbQuestionName" Text='<%# Eval("QuestionText") %>' CssClass="form" Width="300px"></asp:TextBox> 
        <input type='button' id='man' value='hide/show'> 
       </div> <!-- end heading --> 
       <div class="content"> 
        <p class="small_bold new">Question Type</p> 
        <asp:DropDownList runat="server" ID="QuestnType" CssClass="question_dropdown"> 
        <asp:ListItem Value="1">Check Boxes (Multiple Choice)</asp:ListItem> 
        <asp:ListItem Value="2">Drop Down</asp:ListItem> 
        <asp:ListItem Value="3">Open Ended</asp:ListItem> 
        <asp:ListItem Value="4">Radio Buttons (Single Choice)</asp:ListItem> 
        <asp:ListItem Value="5">Range (Percentage)</asp:ListItem> 
        </asp:DropDownList> 
        <asp:DataList ID="nestedDataList" runat="server"> 
        <ItemTemplate> 
         <p class="new">Answer <asp:Label ID="lblAnswerOrder" runat="server" Text='<%# Container.ItemIndex + 1 %>'></asp:Label></p> 
         <asp:HiddenField ID="hiddenAnswerID" runat="server" Value='<%# Eval("AnswerID") %>' /> 
         <asp:TextBox ID="TextBox1" runat="server" CssClass="form" Text='<%# Eval("AnswerID") %>' Width="300px"></asp:TextBox> 
         <asp:TextBox ID="tbAnswerText" runat="server" CssClass="form" Text='<%# Eval("AnswerTitle") %>' Width="300px"></asp:TextBox> 
        </ItemTemplate> 
       </asp:DataList> 
       <asp:Button runat="server" ID="updateName" CssClass="button_update" style="border: 0px;" onClick="UpdateQuestionName_Click" /> 
       <asp:Button runat="server" ID="btnDelete" Text="Delete" OnClientClick="return confirm('Are you sure you want to delete this question?');" /> 
      </div> 
     </div> <!-- end Questions --> 
     </div> <!-- end questionbox --> 
     <script type="text/javascript"> 
      jQuery(document).ready(function() { 
       jQuery(".content").hide(); 
      }); 
     </script> 
     <script type="text/javascript"> 
      jQuery(document).ready(function() { 
       jQuery('#man').live('click', function (event) { 
        jQuery('.content').toggle('show'); 
       }); 
      }); 
     </script> 
    </ItemTemplate> 

+1

一個id屬性值只能在頁面上使用一次。 – Daxcode 2012-03-25 17:52:08

回答

2

試試這個:

​​
+0

這會導致div跳動。 如果div被隱藏,並且我按下按鈕即可:打開 - >關閉 - >打開。然後保持可見/開放。如果再次按下按鈕,則反向排序。有任何想法嗎? – HGomez90 2012-03-25 18:15:17

+0

解決:我從ASP datalist的項目模板中刪除了腳本。 – HGomez90 2012-03-25 18:18:31

1

如果替代品具有類值id屬性,下面的代碼改變可能的工作:

jQuery('.man').live('click', function (event) { 
    jQuery(this).parents().find(jQuery('.content')).toggle('show'); 
}); 
+2

對此的一般注意:正如另一條評論所述,不應該在頁面上多次使用相同的id值,因爲它是唯一的標識符。如果更多DOM對象具有相同的標識符,某些瀏覽器可能會遇到困難,以識別正確的DOM對象。 – Daxcode 2012-03-25 17:57:51

+0

已注意到你指向並將id更改爲一個類。 – HGomez90 2012-03-25 18:18:56

0

集「內容」 CSS顯示:無寫這個。

<script type="text/javascript"> 
    $(document).ready(function() { 
     jQuery('#man').toggle(function() { 
      jQuery(".content").sliceDown(); 
     }, function() { 
      jQuery(".content").sliceUp(); 
     }); 
    }); 
</script> 
相關問題