javascript - 如何仅使用 Javascript 设置特定 div block 的打开和关闭?

标签 javascript jquery html css

请检查此链接 https://jsfiddle.net/bhargavjoshi/sL8f6bkr/3/

我正在尝试设置通过单击“继续阅读”打开一个 block 并通过单击“显示更少”关闭该 block 。

现在它通常工作正常,但问题是当我为例如打开两个 block 时。 1 点和 2 点是打开的,如果我点击 show less of point no 1 那么它将关闭第一个 block ,但也会更改 show less 的状态以继续读取 block 2。

那么我如何通过点击显示更少来设置它只会关闭特定的那个 block 。

jQuery(".show-slide-wrp").on("click", function(event){
    event.preventDefault();
    var slidindWrp = jQuery(this).data("slide");
    console.log(slidindWrp);
    jQuery(slidindWrp).slideDown();
    jQuery(this).hide();
});


jQuery(".hide-slide-wrp").on("click", function(event){
    event.preventDefault();
    var $this = jQuery(this);
    var closeDiv = $this.closest(".sliding-wrp");
    jQuery(".show-slide-wrp").show();
    closeDiv.slideUp();
    jQuery('html, body').animate({
        scrollTop: closeDiv.offset().top - 300
    }, 500);

});

// scoll by id
jQuery(".contenttable a").click(function(event) {
    event.preventDefault();
    var $this = jQuery(this);
    var getScrollId = $this.attr("href");  
    console.log(getScrollId);
   jQuery('html, body').animate({
        scrollTop: jQuery(getScrollId).offset().top
    }, 500);
});

最佳答案

问题在这里:

    jQuery(".hide-slide-wrp").on("click", function(event){
    event.preventDefault();
    var $this = jQuery(this);
    var closeDiv = $this.closest(".sliding-wrp");
    jQuery(".show-slide-wrp").show(); // You show all "Keep reading" occurences
    closeDiv.slideUp();
    jQuery('html, body').animate({
        scrollTop: closeDiv.offset().top - 300
    }, 500);

});
//you could put a data-target on theses elements :
<div class="hide-slide-wrp" data-target=".sliding7"><a>Show less</a></div>

编辑:我做了一支笔:为了不像数据目标那样手动向您的 html 添加属性,因为您的页面看起来像静态 html,我在用户单击时将数据目标添加到“显示更少”链接在“继续阅读”链接上。然后当我点击“少显示”链接时,我知道要隐藏哪个“继续阅读”链接 你明白我的意思了吗?

首先:当您单击“继续阅读”时,将数据目标属性添加到右侧的结束标记中:

 var $closingTag = $(this).closest(".benefixbox").find(".hide-slide-wrp");

第二:当你点击结束标签时:隐藏“继续阅读”标签:

var dataTarget = $(this).data("target");// here is my target : keep reading
    jQuery("[data-slide='"+dataTarget+"']").show(); // we show the link keep reading again because we know what its data-slide is

关于javascript - 如何仅使用 Javascript 设置特定 div block 的打开和关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58712231/

相关文章:

html - 无法在 SCSS 中设置链接样式

jSTL 迭代中的 JavaScript

javascript - 如何在不使用 JSON.stringify 或 JSON.parse 的情况下在 javascript 中克隆数组?

javascript - 为什么 closest() 在遍历树之前首先找到它自己的元素

javascript - 在运行时使用 jquery 准备表体会导致设计问题

javascript - 将 HTML 文本输入光标符号更改为 "block"

javascript - 所有不同 Intl.NumberFormats 的完整列表

javascript - JQuery/JavaScript 键盘事件

javascript - iCheck on() 方法回调不起作用

asp.net - jQuery datepicker - 限制服务器端的日期 (ASP.NET)