如果这是您的全部代码,并且它出现在相关元素之前(无论是在head
还是body
元素中,问题是脚本在 DOM 节点存在之前运行。
因此,您可以将其放置在$(document).ready()
:
<script>
$(document).ready(function(){
$('.evenTd').hide();
});
</script>
或者将脚本放置在 HTML 中要对其执行操作的元素之后。
<body>
<table>
<tr>
<td>itemOne</td>
<td class="evenTd">itemTwo</td>
</tr>
</table>
<script>
$('.evenTd').hide();
</script>
</body>
但是请记住,添加和删除单个表格单元格可能会导致布局问题,最好隐藏相关的后代元素td
,而不是其td
本身。
例如,给定当前的 HTML:
<table>
<tr>
<td>itemOne</td>
<td class="evenTd"><div>itemTwo</div></td>
</tr>
</table>
和:
$(document).ready(function(){
$('.evenTd').hide();
});
这给出:demo,导致单个可见td
占用整个行空间。
使用上面的 HTML 和下面的 jQuery:
$(document).ready(function(){
$('.evenTd div').hide();
});
这给出了:demo,它仍然演示了布局更改(因为没有可视内容显示在里面td
),但td
仍然可见(所以它是一个稍微小的变化)。
下面的 jQuery 只是简单地制作了td
“隐藏”的内容(因此它在页面上不可见,但仍然“存在”占用文档流中的空间):
$(document).ready(function(){
$('.evenTd div').css('visibility','hidden');
});
这给出了:演示。
但是,如果要在某个时候恢复这种可见性,我当然更愿意在其td
自身上添加或删除一个类,并使用 CSS 来解决每个状态的细节:
$(document).ready(function(){
$('.evenTd').addClass('hidden');
$('tr').on('click', 'td.evenTd', function(){
$(this).toggleClass('hidden');
});
});
JS 小提琴演示。