javascript - 高度更改为自动适用于所有元素

标签 javascript jquery html css

当我点击“更多+”按钮时,此代码将 div 的高度更改为自动。

我怎样才能只为我想要的 div 运行这个函数?

目前,当我单击“viwviewmori”按钮时,它适用于所有 div。

另一个问题是,当我第二次单击“viwviewmori”按钮时,我想再次将文本“... less -”更改为“more”。

<!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Untitled Document</title>
    </head>
    <body>
    <div class="hidi">
    <div class="uner-sch">
    <input type="checkbox"/>
    first
    </div>
    </div>
    <div class="viwviewmori"> ... more +</div>
    <div class="hidi">
    <div class="uner-sch">
    <input type="checkbox"/>
    second
    </div>
    </div>
    <div class="viwviewmori"> ... more +</div>


    <script>
    $(".viwviewmori").click(function(){
    var el = $('.hidi'),
        curHeight = el.height(),
        autoHeight = el.css('height', 'auto').height();
    el.height(curHeight).animate({height: autoHeight}, 1000),
              $(this).text('... less -');
    });
    </script> 
    </body>
    </html>

最佳答案

click处理函数将事件对象作为参数。

因此,您可以使用 event.target .

要更改文本,您可以使用:

 el.text( (el.text().indexOf('more')> -1) ? '... less -' : '... more +');

$(function () {
  $(".viwviewmori").click(function (e) {
    var el = $(e.target),
        hidi = el.prev('div.hidi'),
        curHeight = hidi.height(),
        autoHeight = hidi.css('height', 'auto').height() * ((el.text().indexOf('more') > -1) ? 3 : 1);
    hidi.height(curHeight).animate({height: autoHeight}, 1000),
      el.text(((el.text().indexOf('more') > -1) ? el.text().replace(/more \+$/g, 'less -') : el.text().replace(/less \-$/g, 'more +')));
  });
});
.viwviewmori {
  width: 30%;
  border:1px solid black;
}
<script src="https://code.jquery.com/jquery-1.12.1.min.js"></script>

 <div class="hidi">
    <div class="uner-sch">
        <input type="checkbox"/>
        first
    </div>
</div>
<div class="viwviewmori"> ... more +</div>
<div class="hidi">
    <div class="uner-sch">
        <input type="checkbox"/>
        second
    </div>
</div>
<div class="viwviewmori"> ... more +</div>

关于javascript - 高度更改为自动适用于所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38307093/

相关文章:

javascript - Bootstrap 视差工具提示和平滑滚动

javascript - 为什么执行函数不起作用?

javascript - 哪种方式是正确的? JavaScript 对象 (nodejs)

javascript - 在 JavaScript/JQuery 中测试 URL 等效性(获取 URL 的规范形式)

c# - 如何将数据从 C# 传递到 jquery/javascript?

javascript - 在 canvas 和 jquery 中设置图像大小百分比

html - 不同语言的不同字形选择

javascript - 水平移动一个div

javascript - 从 json 字符串解析图像

javascript - 如何在 Canvas 对象保持在同一位置的同时旋转该对象