2013-06-26 69 views
0

我在ItemTemplate內的ItemTemplate.Then列出我的數據的第一要素,我有兩個div標籤如下:div元素只

<ItemTemplate> 
    <div id="contentdiv"> 
     <h4 id="titleresult"><a href="#" onclick="showResults(<%#Eval("UserID")%>);return false;" class="title"><%# Server.HtmlEncode(Eval("Name").ToString())%></a></h4> 
    </div> 

    <div id="showclick" class=hideAll> 
     <p class="brief"><%# Server.HtmlEncode(Eval("LegalName").ToString())%></p> 
     <p class="brief"><%# Server.HtmlEncode(Eval("FirstName").ToString())%></p> 
     <p><%# Server.HtmlEncode(Eval("LastName").ToString())%></p> 
    </div> 
    </ItemTemplate> 

那麼我的CSS定義hideAll類,這樣當頁面加載時,該div標籤中的數據將被隱藏,直到用戶點擊contentdiv鏈接。

.hideAll { display:none } 
    .displayAll { display:block; top:0px} 

於是最後我對射擊的單擊事件的JavaScript部分。

<script type="text/javascript"> 
    function showResults(UserID) { 
     var contentdiv= document.getElementById('contentdiv'); 
     var showclick = document.getElementById('showclick'); 

     <% 
     long id =0; 
     DataAccess dataAccess = new DataAccess(); 
     Data = dataAccess.GetCounterParty(id); 

     %> 
     var UserID = <%=dataAccess.GetCounterParty(id) %> 
     contentdiv.style.visibility = "visible"; 
     $(showclick).removeClass('hideAll'); 
     } 
    </script> 

UserID是列表中每個元素的ID。問題是,無論我點擊列表中的其他元素,點擊只會影響第一個元素。

回答

4

在html中使用id表示一個元素。
如果您多次使用它,瀏覽器將默認爲第一個元素。

您應該使用類選擇器。例如:

$(".contentdiv").click(function(){ 
    $(this).next().removeClass('hideAll'); 
}); 

這是working example。儘管我使用了toggleClass,但它似乎更適合我。

+0

工作得很好,謝謝。如果我想在點擊標題時再次隱藏數據,該怎麼辦? – mutiemule

3

一個id是一個唯一的標識符,你不能在同一個頁面上使用相同的標識符希望事情能夠正常工作。使您的標識符唯一,並使用類選擇器綁定到單擊事件。

+0

謝謝你的信息,我現在知道更好。 – mutiemule

0

你應該使用類而不是ID,ID是獨一無二的,只在第1頁存在,類可以在multple DIV存在

一些想法ü

html 
<div class="showclick hideAll"> 

script 
$('.showclick').on('click', function(){ 
    $(this).toggle(); //toggle to show or hide, can be any element u want to toggle instead of this 
});