手风琴不能正常工作

时间:2011-03-07 10:45:49

标签: javascript jquery asp.net jquery-plugins

我必须展示一些类似于手风琴的功能 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现在它打破了第二种情况。 如何解决它。

1 个答案:

答案 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。检查相同的内容是为了测试它是否是自我点击它是不是就行了