使用jquery显示/隐藏行

时间:2010-05-26 22:46:24

标签: jquery html

您好我正在使用其他帖子中的一些修改过的代码。基本上我想在显示10行表格之间切换以显示所有行(例如50)。我已经让它显示从10行到所有,但我现在需要做的是编码它,以便如果我再次单击div它切换或重置为显示10行。

<script type="text/javascript">
var numShown = 10; // Initial rows shown & index
var numRows = $('tbody').find('tr').length;
var numLeft = numRows - numShown;

$(document).ready(function(){
 // Hide rows and add clickable div
 $('tbody')
  .find('tr:gt(' + (numShown - 1) + ')').hide().end() 
  $('#table_wrapper').after('<div id="more">Show all offers <span>
     (' + numLeft + ' more)</span></div>');

 $('#more').click(function(){
  numShown = numShown + numRows;
  $('tbody').find('tr:lt('+numShown+')').show(); 
  $("#more").html("Show top 10 offers");
 })
})
</script>

4 个答案:

答案 0 :(得分:2)

试试这个:

$('#more').click(function(){
    if(numShown <= 10)
    {
        //show some more
        numShown = numShown + numRows;
        $('tbody').find('tr:lt('+numShown+')').show(); 
        $("#more").html("Show top 10 offers");
    }
    else
    {
        //hide some rows
        numShown = 10;
        $('tbody').find('tr:gt('+numShown+')').hide(); 
        $("#more").html("Show more");
    }
})

答案 1 :(得分:1)

这是.toggle()方法的一种用法:

$('#more').toggle(
           function(){
             numShown = numShown + numRows;
             $('tbody').find('tr:lt('+numShown+')').show(); 
             $("#more").html("Show top 10 offers");
           }, function() {
             // set the local vars you need here
             $('tbody').find('tr:gt('+(numShown-1)+')').hide();
             $('#more').html('Show all offers <span>('+numLeft+' more)</span>');
           });

由于没有标记,我不确定这是否与您的设置完全相同,但重点是在toggle()的第二个函数中重置初始状态的行

答案 2 :(得分:1)

我更喜欢使用addClass()隐藏行,方法是在我的CSS样式表中添加一个用display: none;样式的类。然后,要显示以前隐藏的行,我要做的就是选择具有此类的行并从中删除类。就像:

$('.hidden_row').removeClass('hidden_row');

答案 3 :(得分:0)

$(some_selector)返回匹配元素的列表。您可以在它们上面调用.slice(),并在每个元素上执行任何操作。请注意,列表中的项不是jquery对象,而是默认的DOM对象(来自getElementBy...方法的对象)。您可以处理这些问题,也可以$(domobject)再次获取jquery对象。