我用jquery创建了一个页面,在这个页面中,表行的类名将它们标识为某种颜色(即tr class=“yellowClass”)。
用户可以通过单击将显示/隐藏特定颜色表的复选框来筛选行。
我的问题是表是通过getjson请求动态生成的。要将新内容添加到表中,我首先对表的tbody($(''my table''utbody').children().remove())执行children().remove(),然后使用appendto重新添加新表信息。
此函数的一个示例是:
$('#my_table_tbody').children().remove();
$.getJSON("http://my_url.com/my_cgi_bin/my_cgi", {data: mydata}, function(j) {
var mylength = j.length;
for (var k = mylength - 1; k >= 0; k--)
$('<tr class="' + j[k].color + '"><td class="my_first_col_class">' + j[k].data1 + '</td><td class="my_second_col_class">' + j[k].data2 + '</td></tr>').appendTo($('#my_table_tbody'));
});
现在,在这个函数的末尾,我试图检查是否选中了复选框,如果是,则显示/隐藏新信息。例如,基本上
if (('#my_yellow_color_cb').attr('checked'))
$('.yellowclass').show();
else
$('.yellowclass').hide();
问题是,页面不想“记住”检查过的内容。换句话说,如果未选中“YellowClass”复选框,并且页面重新加载了新的表数据,则YellowClass类仍将显示,而实际上应该隐藏它。
我怀疑这与dom和创建可显示/隐藏的适当dom元素有关。但我不知道在我的特殊情况下该怎么做。我是一个系统程序员,我这样做只是为了编写一个工具,为我们的测试人员提供一些状态信息。在javascript方面,我不是专家,对dom也不太了解,似乎无法理解这一点。
如何插入页面以便正确显示和隐藏此信息?
如果我用新的表数据更新页面,然后选中和取消选中复选框,则一切正常。但是如果我加载表数据,只检查框的状态,它就不想工作了。jquery在访问dom对象之前是否需要一点时间来创建它们?
谢谢你的帮助。