繁体   English   中英

如何用span标签包裹每个菜单项的最后一个字母?

[英]How to wrap last letter of each menu item with a span tag?

我有一个导航菜单,我想使用jQuery将每个菜单项文本的最后一个字母包装为span标签。

这是我目前的方法,但是不起作用:

$('.navbar-nav li a').each(function(i) {

    var menuElement = $(this).html();

    var menuElementLenght = menuElement.length;

    var lastChar = menuElement.charAt(menuElementLenght - 1);

    $(lastChar).wrap('<span></span>')

});

我想是因为我的目标是剥离的字符串而不是HTML元素。

您可以使用regex简单地做到这一点,

$('.navbar-nav li a').html(function(_,txt) {
    return txt.replace(/(.$)/, "<span>$1</span>");
});

DEMO

用正则表达式语言(.$)将匹配最后一个字符。 $表示字符串的结尾。 由于我们使用()对其进行了分组,因此可以使用$notation访问匹配的组。

使用.html() ,如下所示:-

$('.navbar-nav li a').html(function (index, html) {
  return html.slice(0, html.length - 1) + '<span>' + html.slice(html.length - 1) + '</span>';
});

DEMO

这是一种实现方法:

 $('p').each(function(index, element) {
    // grab all of the elements you want.
    var $el = $(element);
    var words = $el.text().split(' '); // split the word into letters
    $el.html(''); // delete the old stuff
    // now this code wraps every letter in a span, but you can take if from here!
    for (var i = 0; i < words.length; i++) {
      var newSpan = $('<span>').text(words[i] + ' ');
      $el.append(newSpan);
    }
  });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM