Safari 忽略了我的 Jquery 代码,用于删除 span 中的第一个单词

Safari ignores my Jquery code for removing first word in span

我有一个 UL LI 列表

<ul class="tags no-animation clearfix" id="manufact">
    <li>
        <a href="">
            <img>
            <span>Logo name</span>
        </a>
    </li>
    <li>
        <a href="">
            <img>
            <span>Logo name</span>
        </a>
    </li>
</ul>

我需要去掉 "Logo" 这个词,因为它是重复的。 我的 JS 是

$('#manufact li > a span').each(function(){
    var element = $(this);
    $(this).text(element[0].innerText.split(' ').splice(1).join(' '));
});

在除 Safari 之外的所有浏览器中,这(可能不是完美的 JS)是可以的,在 Safari 中它完全清除 SPAN 中的所有内容并将其留空。

我想要这个结果 -

<ul class="tags no-animation clearfix" id="manufact">
    <li>
        <a href="">
            <img>
            <span>name</span>
        </a>
    </li>
    <li>
        <a href="">
            <img>
            <span>name</span>
        </a>
    </li>
</ul>

提前致谢!

为了更简单地实现这一点,您可以为 text() 提供一个函数,它仅替换每个元素中文本值开头的单词 Logo。我还没有测试过,但这在 Safari 中应该可以正常工作。

$('#manufact li > a span').text((i, t) => t.replace(/^Logo\s?/i, ''));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="tags no-animation clearfix" id="manufact">
  <li>
    <a href="">
      <img>
      <span>Logo name</span>
    </a>
  </li>
  <li>
    <a href="">
      <img>
      <span>Logo name</span>
    </a>
  </li>
</ul>

如果您 总是 想要删除 span 中的第一个词,无论那个词是什么,那么您也可以将您的原始逻辑用于此模式:

$('#manufact li > a span').text((i, t) => t.split(' ').splice(1).join(' '));

尝试这样的事情:

$('#manufact li > a span').each(function(){
    var element = $(this);
    element.text(element.text().split(' ').splice(1).join(' '));
});