【问题标题】:Select hidden elements and manipulate them with jQuery选择隐藏元素并使用 jQuery 操作它们
【发布时间】:2012-12-13 10:40:09
【问题描述】:

在一个带有“section”类的 div 包装器中,我有几十个 HTML 元素在页面上重复,看起来像这样:

<div class="section">
  <div class="article"></div>
  <div class="article"></div>
  <div class="article"></div>
</div>

每个里面都包含一定的信息。现在,我要做的是一旦页面加载,只显示前 5 个,将其余部分隐藏在一个用 jQuery 插入的新 div 中,当点击这个新 div 时,它将显示下一个 5 ,然后是下一个五点再次点击,以此类推直到结束。这个想法是这个新的 div 将用作一个按钮,该按钮将始终位于页面的末尾,并将响应我刚才提到的这些命令。到目前为止,我已经完成了:

$('.section').each(function () {
    var $this = $(this),
        $allArticles = $this.find('.article');

    if ($allArticles.length > 5) {
        $('<div/>').addClass('hidden-articles').appendTo(this).append($allArticles.slice(5));
        $('.hidden-articles .article').hide();
    }
});

这隐藏了除前五个之外的所有内容。但是现在对于剩下的过程,我无法让它工作。我似乎无法正确选择那些带有“文章”类的隐藏 div 并操纵它们以按照我上面描述的方式运行。如果有更多 jQuery 经验的人可以指导我正确的方向并可能提供一个 sn-p,我将不胜感激。非常感谢!

【问题讨论】:

  • 您也应该在此处发布您的HTML 代码。

标签: javascript jquery jquery-selectors


【解决方案1】:

您可以使用 :hidden 和 :lt 选择器来获得您正在寻找的功能..

$('.section').each(function() {
    var $this = $(this),
        $allArticles = $this.find('.article');

    if ($allArticles.length > 5) {
        $('<div/>').addClass('hidden-articles')
                   .appendTo(this).append($allArticles.slice(5));
        $this.find('.hidden-articles .article').hide();

    }
});

$('#show').on('click',function() {
    var $hidden = $('.hidden-articles .article:hidden:lt(5)');
    $hidden.show();
});​

更新

// If one one element to search 
var elem = '.section' ;
hideArticles(elem);

// If Multiple Elements on the page...
$('.section').each(function() {
    hideArticles(this);
});

$('#show').on('click', function() {
    var $hidden = $('.hidden-articles .article:hidden:lt(5)');
    $hidden.show();
});

function hideArticles(elem) {
    var $this = $(elem),
        $allArticles = $this.find('.article');

    if ($allArticles.length > 5) {
        $('<div/>').addClass('hidden-articles')
                   .appendTo(this).append($allArticles.slice(5));
        $this.find('.hidden-articles .article').hide();
    }
}​

Check Fiddle

【讨论】:

  • 感谢您的详细回复。它接近我所追求的,如果可以的话,我会发布你的帖子。但是,问题是单击切换按钮将显示隐藏在一个部分中的所有内容,可能是几十个项目,我只是在寻找一种方法来显示接下来的五个,然后再显示下五个点击,不只是一批元素。这是我刚刚创建的fiddle 供您查看。如何创建一个始终位于页面末尾并在单击后动态显示一组文章的按钮?再次感谢!
  • @Sushanth.. 你太棒了!这就是我一直在寻找的概念,我现在已经调整了代码以满足我的需要。真的很有帮助。我有一个简短的问题要问你:假设我不想在 .section 选择器上运行 .each() 方法,因为在整个文档中只会有 one 这样的方法。我认为将 .each() 方法中的所有代码移动到一个新函数是一个不错的选择,但是有没有办法可以将选择器传递给我的新函数?你会如何推荐我这样做?谢谢!
  • @Annabel .. 不客气 :) .. 如果是这样,那么您可以将 this 对象传递给函数,因为这是唯一需要的对象.. 我有用我现在能想到的方法更新了帖子..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-19
  • 1970-01-01
  • 2013-03-22
  • 2010-10-15
  • 1970-01-01
相关资源
最近更新 更多