在 jQuery 中对选定的子项进行分组

发布于 2024-09-16 09:41:48 字数 960 浏览 5 评论 0原文

这一定是一件容易的事……

我有一个清单。我想显示每个列表项中的一个元素,并可以选择查看更多元素(如果有)。像这样:

<li class="item">
  <div class="elementToShow">Shown Element</div>
  <div class="elementsToBeHidden">Hidden Element</div>
</li>
<li class="item">
  <div class="elementToShow">Shown Element</div>
</li>
<li class="item">
  <div class="elementToShow">Shown Element</div>
  <div class="elementsToBeHidden">Hidden Element</div>
</li>

然后我想在 jQuery 中添加一个按钮来公开其他元素:

$('.item).children('.elementsToBeHidden')
  .wrapAll('<div class="hiddenElements"></div>');
$('<a class="hiddenElements"> See More </a>')
  .appendTo($('.hiddenElements'))
  .click(function() {
    $('.elementsToBeHidden').slideToggle('slow');
  });

不过,这会将所有隐藏元素分组到第一个列表项下。

如果我想显示第一项中的第一个隐藏元素和第三项中的第三个隐藏元素,那么缺少什么?

预先感谢您的任何帮助。

This has got to be an easy one...

I have a list. I want to show the one element in each list item, with an option to see more (if there are any). Like this:

<li class="item">
  <div class="elementToShow">Shown Element</div>
  <div class="elementsToBeHidden">Hidden Element</div>
</li>
<li class="item">
  <div class="elementToShow">Shown Element</div>
</li>
<li class="item">
  <div class="elementToShow">Shown Element</div>
  <div class="elementsToBeHidden">Hidden Element</div>
</li>

I then want to add a button in jQuery to expose the other elements:

$('.item).children('.elementsToBeHidden')
  .wrapAll('<div class="hiddenElements"></div>');
$('<a class="hiddenElements"> See More </a>')
  .appendTo($('.hiddenElements'))
  .click(function() {
    $('.elementsToBeHidden').slideToggle('slow');
  });

This, though, groups all the hidden elements under the first list item.

What is missing if I want to show the first hidden element in the first item and the third in the third item?

With thanks in advance for any help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

情徒 2024-09-23 09:41:48

为什么要在上课的时候费力把它们包裹起来呢?

试试这个: http://jsfiddle.net/GEJ29/2/

$('.item:has(.elementsToBeHidden)').append('<a class="hiddenElements"> See More </a>')
    .find('a').click(function() {
    $(this).siblings('.elementsToBeHidden').slideToggle('slow');
});​

或同样的事情,但在我看来更好一点:

http://jsfiddle.net/GEJ29/3 /

$('<a class="hiddenElements"> See More </a>').appendTo('.item:has(.elementsToBeHidden)')
    .click(function() {
        $(this).siblings('.elementsToBeHidden').slideToggle('slow');
});​

原始答案:

您想单独对每个

  • 进行操作。
  • 试试这个: http://jsfiddle.net/wQ2V6/

    $('.item').each(function() {
        $(this).children('.elementsToBeHidden')
            .wrapAll('<div class="hiddenElements"></div>');
    
        $('<a class="hiddenElements"> See More </a>')
            .appendTo($(this).find('.hiddenElements'))
            .click(function() {
                $(this).siblings('.elementsToBeHidden').slideToggle('slow');
            });
    
    });
    

    Why bother wrapping them when they have a class?

    Try this: http://jsfiddle.net/GEJ29/2/

    $('.item:has(.elementsToBeHidden)').append('<a class="hiddenElements"> See More </a>')
        .find('a').click(function() {
        $(this).siblings('.elementsToBeHidden').slideToggle('slow');
    });​
    

    or the same thing, but a little better in my opinion:

    http://jsfiddle.net/GEJ29/3/

    $('<a class="hiddenElements"> See More </a>').appendTo('.item:has(.elementsToBeHidden)')
        .click(function() {
            $(this).siblings('.elementsToBeHidden').slideToggle('slow');
    });​
    

    Original answer:

    You want to operate on each <li> individually.

    Try this: http://jsfiddle.net/wQ2V6/

    $('.item').each(function() {
        $(this).children('.elementsToBeHidden')
            .wrapAll('<div class="hiddenElements"></div>');
    
        $('<a class="hiddenElements"> See More </a>')
            .appendTo($(this).find('.hiddenElements'))
            .click(function() {
                $(this).siblings('.elementsToBeHidden').slideToggle('slow');
            });
    
    });
    
    ~没有更多了~
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文