检查某些单词是否已经具有范围作为包装器

时间:2019-06-28 16:25:52

标签: javascript jquery coffeescript

我有多个div元素,它们在一些文本旁边还包含一个写为+example@email.com的电子邮件地址。现在,我尝试将span作为每个电子邮件地址的包装添加。我找到了用一些span元素和文本替换以+开头的每个单词的解决方案。有什么方法可以检查+example@email.com是否已经有跨度​​?我不想多次包装。我正在使用coffeescript

wrapAllThreadEmails = ->
  $('.comment-body-area').each (comment) ->
    text = $(this).html().replace(/\s\+(.*?)(\s|$)/g, '<span> +$1</span>$2')
    $(this).html(text)
    return

1 个答案:

答案 0 :(得分:0)

好的,您可以先检查返回的HTML是否与<span>相匹配:

wrapAllThreadEmails = ->
  $('.comment-body-area').each (comment) ->
    if not $(this).html().match(/<span>/) # Check for matching <span> here
      text = $(this).html().replace(/\s\+(.*?)(\s|$)/g, '<span> +$1</span>$2')
      $(this).html(text)

您还可以从函数CoffeeScript will always return the final value的表达式中删除return