如何使此脚本执行其他功能

时间:2012-11-24 14:59:43

标签: javascript jquery

我最近用Jquery找到了这个可扩展的表,它非常轻量级且代码很棒。但是,我需要对它做一些小改动,但我不知道如何。当你从第一行到第二行,第三行,第四行等等时,你看一下这个demo。该行只是继续扩展,而不是我需要活动行来收缩。这意味着,当用户从点击第一行转到第二行时,则前一个合同..

我希望很清楚,我会提供代码,但你可以看到源代码,它很整洁,Here是完整的教程。

感谢。

好的,这是Jsfiddle中的代码:

    $(document).ready(function(){
        $("#report tr:odd").addClass("odd");
        $("#report tr:not(.odd)").hide();
        $("#report tr:first-child").show();

        $("#report tr.odd").click(function(){
            $(this).next("tr").toggle();
            $(this).find(".arrow").toggleClass("up");
        });
        //$("#report").jExpand();
    });

2 个答案:

答案 0 :(得分:3)

将您的点击处理程序更改为此处,在展开所选单词之前收集所有内容:

$("#report tr.odd").click(function() {
    if ($(this).next("tr").is(":visible")) {
        $(this).next("tr").hide();
        $(this).find(".arrow").removeClass("up");
    } else {
        $("#report tr:not(.odd)").hide();
        $(".arrow").removeClass("up");
        $(this).next("tr").show();
        $(this).find(".arrow").addClass("up");
    }
});

请参阅fiddle

答案 1 :(得分:2)

这是一种方法,但我觉得它可以稍微简化一下:

$('#report tbody tr:nth-child(odd)').addClass('odd');
$('#report tbody tr:nth-child(even)').addClass('even').hide();
$('tr.odd').click(
    function(){
        var that = $(this),
            next = that.next('.even');
        that.find('.arrow').toggleClass('up');
        next.toggle().siblings('.even').hide();
        $('.even:not(":visible")').each(
            function(){
                $(this).prev('.odd').find('.up').removeClass('up');
            });
    });

JS Fiddle demo

参考文献: