当我切换时,如何在数组中存储id值?

时间:2010-05-16 21:50:10

标签: javascript jquery

我正在切换'tr.subCategory1'及其兄弟.RegText。同时我试图将它的ID存储在数组中,如list_Visible_Ids[$(this).attr('id')] = $(this).css('display') != 'none' ? 1 : null;(当我崩溃时,我需要在其ID位置的数组中存储'null',如果我展开,我需要存储我需要存储{ {1}}在其ID位置)。但每次1显示alert($(this).css('display'))。我怎么处理这个?因此,当我折叠或展开时,它只存储block

1

1 个答案:

答案 0 :(得分:0)

您不是切换tr本身,只切换其兄弟姐妹(类.RegText.VolumeRegText)。因此,在将状态存储在数组中时,必须检查这些是否可见。为此,您可以在其中一个兄弟姐妹身上使用.is(":hidden")。点击功能将如下所示

$('tr.subCategory1')
.css("cursor", "pointer")
.attr("title", "Click to expand/collapse")
.click(function() {
    $(this).siblings('.RegText').toggle();
    var isHidden = $(this).siblings('.VolumeRegText').toggle().is(':hidden');
    list_Visible_Ids[$(this).attr('id')] = !isHidden ? 1 : null;
});

对其余代码也有很多评论。在

$('tr[@class^=RegText]').hide().children('td');

跳过.children('td'),因为您没有使用此选项。


list_Visible_Ids = [];应使用var声明。

<小时/> 循环显示idsArray,您正在检查this != "" || this != null),该&&应该使用||而不是$.each(idsArray, function() { if (this != "" && this != null) { $('#' + this).siblings('.RegText').toggle(); list_Visible_Ids[this] = 1; } });

$.each()

使用@函数而不是常规JavaScript for循环也没有意义

<小时/> 您似乎也在使用旧版本的jQuery,因为在version 1.3中不推荐使用选择器中的{{1}}。