如果标签超过两个,如何截断锚标签

Posted

技术标签:

【中文标题】如果标签超过两个,如何截断锚标签【英文标题】:How to truncate the anchor tag if tags are more than two 【发布时间】:2022-01-11 09:23:38 【问题描述】:

我的页面上有以下代码

var menuBreadcrumb = document.getElementById('menu-breadcrumb');

var counta = $("#menu-breadcrumb a").length;
//alert(counta);

if (counta >= 2) 
  let mbcElement = '<a class="mbc-link-back" href="#" data-menu-item-id="">...</a>';
  menuBreadcrumb.insertAdjacenthtml('beforeend', mbcElement);


.mbc-link-back 
  color: #0066cc;
  text-decoration: none;


#menu-breadcrumb a+a::before 
  color: #222;
  content: '>';
  cursor: default;
  padding: 0 3px;
<div id="menu-breadcrumb">
  <a href="">Demo 1</a>
  <a href="">Demo 2</a>
  <a href="">Demo 3</a>
  <a href="">Demo 4</a>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

我正在做的是,如果anchor 标签大于 2,那么我必须显示 firstlast 锚标签,在中间,我必须显示 ... 并带有可点击。

到目前为止,我有超过 2 个锚标签,所以我的预期输出是

Demo1 > ... > Demo4

如果我有 2 个锚标记,那么我必须显示

Demo1 > Demo2

【问题讨论】:

【参考方案1】:

您可以使用此脚本来实现您的目标:

let anchors = $("#menu-breadcrumb a");
  if (anchors.length > 2) 
    let mbcElement = $('<a class="mbc-link-back" href="#" data-menu-item-id="">...</a>');
    anchors.not(':first, :last').addClass('inactive');
    anchors.first().after(mbcElement)
  
.mbc-link-back 
  color: #0066cc;
  text-decoration: none;


.mbc-link-back 
  color: #0066cc;
  text-decoration: none;


#menu-breadcrumb a+a::before 
  color: #222;
  content: '>';
  cursor: default;
  padding: 0 3px;


#menu-breadcrumb .inactive 
    display: none;
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="menu-breadcrumb">
  <a href="">Demo 1</a>
  <a href="">Demo 2</a>
  <a href="">Demo 3</a>
  <a href="">Demo 4</a>
</div>

如果你想通过点击 ... 来显示隐藏的链接,你可以像这样在 mbcElement 上添加事件监听器:

mbcElement.on('click', function()
  $(this).hide()
  $("#menu-breadcrumb a.inactive").removeClass('inactive')
)

【讨论】:

以上是关于如果标签超过两个,如何截断锚标签的主要内容,如果未能解决你的问题,请参考以下文章

使用锚标签链接打开标签?

我尝试将删除按钮标签替换为锚标签,但没有成功

过滤掉字符串中的锚标签

设置标题锚点时如何防止标题标签继承超链接样式

HTML 锚标记之间的间距

如何设置 vue.js 忽略锚标签?