为什么我的jQuery toggleClass在我的C#转发器中无法正常工作?

时间:2015-12-08 00:11:19

标签: c# jquery repeater

我有一个使用转发器和jQuery的c#应用程序在我的应用程序中添加一个小吃。当内容向上和向下滑动以隐藏或显示点击的 ONE 部分时,jQuery的第一部分正常运行,但第二部分更改所有类,包括单击部分内的类。这是为什么?

这是我的转发器布局:

<ItemTemplate>                    
        <div class="head"><span class="expand">&nbsp;</span> <%#Eval("Job_Title") %></div>
        <div class="row" style="margin:0px 0px 20px 50px; display: none;">
        <div><%#Eval("Status") %></div>
        <div><%#Eval("Department") %></div>
        <div><%#Eval("Posting_Site") %></div>
        <div><%#Eval("Job_Duties") %></div>
    </div>
</ItemTemplate>

这是我的jQuery:

<script type="text/javascript">
    $(function () {
        $('.head').click(function () {
            $(this).next('div.row').stop(true, true).slideToggle(400, function () {
                $('.expand').toggleClass('collapse'); 
            });
        });
    });
</script>

2 个答案:

答案 0 :(得分:2)

$('.expand')定位该类的所有元素,如果您只想定位当前.head内的那个元素

$(this).prev('.head').find('.expand').toggleClass('collapse')

或相反的是

var thisOne = $(this).prev('.head').find('.expand');

$('.expand').not(thisOne).toggleClass('collapse');

答案 1 :(得分:2)

您使用类作为选择器然后使用next,意味着您正在迭代包含'div.row'的每个'head'。

你需要改变它:

$(function () {
    $('.head').click(function () {
        $('.head div.row').slideToggle(400, function () {
            $('.expand').toggleClass('collapse'); 
        });
    });
});