javascript - 忽略 div 内的标签,直到被点击

标签 javascript jquery html css jinja2

我有以下功能,如果单击标签,它会在 tr 标签内展开文字换行文本。

$(document).ready(function () {
    $('tr').click(function () {
        var $this = $(this);
        if($this.css('white-space') === 'nowrap') {
            $this.css('white-space', 'normal');
        }
        else {
            $this.css('white-space', 'nowrap');
        }
    });
});

我正在使用此函数,因为我希望表格单元格中的文本仅显示在一行中(实质上隐藏内部 p 标记),直到被用户单击。然而,问题是 nowrapbrp 标记换行,我有几个这样的标记用于格式化。仅当单击 tr 时,如何才能打开这些标签?

html:

<td>
   <div>
       {{ post.person }}
          <p>
              Message:
              <br>
              {{ post.message }}
          </p>
   </div>
</td>

最佳答案

您可以为您的 div 添加最大高度(1.2em 是相对于字体大小的默认行高)并设置 overflow: hidden。然后你只会看到 1 行。单击后,切换另一个设置 overflow: visibleheight: auto 的类。

$(document).ready(function() {
  $('tr').click(function() {
    var $this = $(this);
    $(this).find(".a").toggleClass("expand");
  });
});
.a{
  height: 1.2em;
  overflow: hidden;
}

.expand{
  height: auto;
  overflow: visible;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
  <tr>
    <td>
      <div class="a">
        {{ post.person }}
        <p>
          Message:
          <br> {{ post.message }}
        </p>
      </div>
    </td>
  </tr>
</table>

关于javascript - 忽略 div 内的标签,直到被点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53900130/

相关文章:

javascript - IE 10 未使用 JQuery 触发 bind() 或 on() 事件

javascript - 如何使用 jquery 在我的 html 代码中获取父节点

javascript - 如何在弹出窗口中使用不同的文本对齐方式

html - 如何更改 WKWebView 文本颜色?

javascript - Chrome 扩展程序/网络应用程序 session 控制

javascript - "Script"范围下的类别

javascript - 使用 querySelector 从单选按钮读取 2 个值

javascript - 如果 window.location.href 里面有 'sometext' - 这样做

javascript - 如何使用 Ajax、jQuery 和 PhP 保存当前 DOM?

javascript - window.print() 在页面打印后从复选框中删除复选标记