2013-06-26 71 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 
});