结合Javascript的块

时间:2013-08-09 00:30:48

标签: javascript jquery dom javascript-events dom-manipulation

我远非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>

3 个答案:

答案 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元素时,网页随之更改。