我必须展示一些类似于手风琴的功能 jquery所以我做了一个jquery的自定义函数来产生效果。
有一个网格视图,其中有两个div是代码。
<asp:GridView ID="grdAccordion" runat="server" AutoGenerateColumns="false" Width="200px">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<div class="myFirstDiv" onclick="testToggle(this)">
<%#Eval("Name")%>
<div class="mySecondDiv" style="display:none">
<%#Eval("Person_Name")%>
</div>
</div>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
第二个div的样式属性显示为none。默认情况下,所有div都已关闭。
我创建了一个使用toggle函数执行动作代码的js函数。
function testToggle(testDiv) {
debugger
var sntHdnValue = $('#hdnSetFlag').val();
if (sntHdnValue == 1) {
$(testDiv).find('div:first').show().attr('isOpen', 'true');
}
else {
$(testDiv)
.parents('table:first')
.find('div[isOpen=true]').removeAttr('isOpen').toggle('slow');
$(testDiv).find('div:first').show().attr('isOpen', 'true');
}
sntHdnValue++;
$('#hdnSetFlag').val(sntHdnValue);
}
在这里,我已经利用隐藏的领域,让我知道它是 初始状态每件事都关闭我正在为我的识别添加一个自定义attr isopen
1)目前的情况是这个在负载情况下应该关闭。 2)比一次只有单个div应该打开。这很好。
问题是如果我点击我点击打开的同一个div 它有两个自定义attr isopen现在它打破了第二种情况。 如何解决它。
答案 0 :(得分:0)
得到了解决方法。
更新了功能。
var glDivID = 0;
function testToggle(testDiv) {
debugger
var sntHdnValue = $('#hdnSetFlag').val();
var dvID = $(testDiv).attr('id');
if (sntHdnValue == 1) {
$(testDiv).find('div:first').show().attr('isOpen', 'true');
}
else {
$(testDiv)
.parents('table:first')
.find('div[isOpen=true]').removeAttr('isOpen').toggle('slow');
if (glDivID != dvID) {
$(testDiv).find('div:first').show().attr('isOpen', 'true');
}
}
sntHdnValue++;
$('#hdnSetFlag').val(sntHdnValue);
glDivID = dvID;
}
我在向网格添加数据时附加了一个id。检查相同的内容是为了测试它是否是自我点击它是不是就行了