javascript - 单击功能触发时如何再次关闭div

标签 javascript jquery html css

我有这个 jquery 代码,它从隐藏的 div 加载更多内容我打开它并且一切正常,但我希望它再次关闭但我不知道该怎么做。 我还想将 loadmore 更改为在打开时关闭...

帮助 HTML:

<a href="#" id="loadMore">Load More</a>  

$(function () {
    $("moreinfo").slice(0, 4).show();
    $("#loadMore").on('click', function (e) {
        e.preventDefault();
        $("div:hidden").slice(0, 4).slideDown();
        if ($("div:hidden").length == 0) {
            $("#load").fadeOut('slow');
        }
        $('html,body').animate({
            scrollTop: $(this).offset().top
        }, 1500);
    });
});
$(window).scroll(function () {
    if ($(this).scrollTop() > 50) {
        $('.totop a').fadeIn();
    } else {
        $('.totop a').fadeOut();
    }
});

更新:

    $(function () {
        $("div").slice(0, 4).show();
        $("#loadMore").on('click', function (e) {
            e.preventDefault();
            $(".moreinfo:hidden").slice(0, 4).slideDown();

        });
        $(".loadLess").on('click', function (e) {
            e.preventDefault();
            $(".moreinfo:visible ").slice(0, 4).slideUp();

        });
    });

这将允许它立即自动打开和关闭...

最佳答案

此函数获取隐藏和显示的前 4 个元素:使用 slideDown 函数阻止它们。如果你想再次隐藏它们,你需要在 slideDown 函数之前引用这些元素。或者,如果这在您的 html 结构中合适,则取出最后 4 个可见的 div 元素并隐藏它们。

所以,像这样的函数

$("#loadLess").on('click', function (e) {
    e.preventDefault();
    $("div:visible").slice(-4).slideUp();
});

在这种情况下,您将需要一个元素来触发此函数运行,最有可能在可见 div 的末尾

  <a id="loadLess">Show less</a>

话虽如此,像 div:visible 或 div:hidden 这样的选择器会带来麻烦。你应该为此使用一些特定的类属性,比如 .contentitems:hidden 之类的

编辑: Here's a fiddle link看到它工作

这是jsfiddle中使用的代码

<div class="someclass">some content 1 </div>
<div class="someclass">some content 1 </div>
<div class="someclass">some content 1 </div>
<div class="someclass">some content 1 </div>
<div class="someclass">some content 1 </div>

.....
<span id="loadMore">Load More</span>
<span id="loadLess">Load Less</span>

js

$('div').slice(0, 4).show();
$("#loadMore").on('click', function (e) {
        e.preventDefault();
        $("div:hidden").slice(0, 4).slideDown();
        if ($("div:hidden").length == 0) {
            $("#load").fadeOut('slow');
        }
        $('html,body').animate({
            scrollTop: $(this).offset().top
        }, 1500);
    });

$("#loadLess").on('click', function (e) {
    e.preventDefault();
    $("div:visible").slice(-4).slideUp();
});

关于javascript - 单击功能触发时如何再次关闭div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23740475/

相关文章:

asp.net - 匹配 <a href="mailto : 的正则表达式

javascript - 如何避免 ES6 箭头函数的 Flow-type 错误

javascript - 使用 Javascript 从待办事项列表中删除项目

javascript - 使用表格数据填写表格

jquery - 图像渲染神器问题 jQuery Mobile

html - 使用 CSS 显示表格的滚动布局

javascript - 如何实现使用 API 获取信息的搜索栏

javascript - 选择的 ng-repeat 不起作用

jquery - 是否可以使用 css 进行第二行刷新?

javascript - 输入类型范围 - 拇指错误时输出