我远非Javascript专家,自学成才,我认为这可能是Javascript 101,但我一定错过了这一课。
我已经提出了以下代码,当我单击它们中的行时(因此每隔一行),会在表格中显示7行。我知道它不是很整洁,但我对自己很满意,它实际上在离线预览中起作用。但是,当我上传我的网站时,默认情况下会显示所有行,我必须单击上面的行才能使它们消失。它们应该默认隐藏。
由于
这是代码:
<script>
$('.openRow1').click(function(){
$('.hiddenRow1').toggle();
})
</script>
<script>
$('.openRow2').click(function(){
$('.hiddenRow2').toggle();
})
</script>
<script>
$('.openRow3').click(function(){
$('.hiddenRow3').toggle();
})
</script>
<script>
$('.openRow4').click(function(){
$('.hiddenRow4').toggle();
})
</script>
<script>
$('.openRow5').click(function(){
$('.hiddenRow5').toggle();
})
</script>
<script>
$('.openRow6').click(function(){
$('.hiddenRow6').toggle();
})
</script>
<script>
$('.openRow7').click(function(){
$('.hiddenRow7').toggle();
})
</script>
答案 0 :(得分:3)
以下是一种更好的方法:http://jsfiddle.net/8fwdf/
DOM:
<div class="openRow">Open</div>
<div class="hiddenRow">Hidden</div>
<div class="openRow">Open</div>
<div class="hiddenRow">Hidden</div>
...
JS:
$('.hiddenRow').hide();
$('.openRow').click(function(){
$(this).next('.hiddenRow').toggle();
})
您不需要为每个人单独绑定。您可以使用jquery选择器在所有元素上选择并应用单个绑定。我在这个例子中使用了div,但你可以对其他元素类型应用相同的东西。
请注意,我不知道您的DOM是什么样的,因此可能需要调整$(this).next()
部分。也许你可以找出那部分,或发布你的DOM,我可以更新。
此外,您可以执行此css并删除hide()
行:
.hiddenRow {
display: none;
}
答案 1 :(得分:1)
要使此代码更整洁,您可以将其替换为:
<script>
for(var i=1; i<=7; i++) {
$('.openRow'+i).click(function(){
$('.hiddenRow'+i).toggle();
});
}
</script>
答案 2 :(得分:1)
您可以这样做:
<script>
for(var i=1; i<=7; i++) {
$('.openRow'+i).click(function(){
$('.hiddenRow'+i).toggle();
}).css('visibility', 'hidden'); //this will make them invisible, but
} //the elements will still take up that
//same amount of space. to completely remove
//use *.css('display', 'none');
</script>
jQuery是DOM中数据的实时表示,因此在您更改jQuery元素时,网页随之更改。