Jquery: Как найти отдельные наборы чисел в текстовой строке и добавить к ним теги href

#jquery #string #text #replace #href

Вопрос:

У меня есть несколько строк текста с цифрами, которые предназначены для подключения к другим записям в индексе (с использованием хэшей, так как они будут отображаться на странице вместе). Например:

 <div class="description"><span>This is some text, which we will reference in entry (330) and also in entry (249).</span></div>
 

Мне удалось вывести цифры, разделенные запятой, но я не могу заставить их разделиться в связи с добавлением ссылок, и я на самом деле не совсем уверен, как мне следует оборачивать их с помощью href, не заменяя текст вокруг них. Вот где я нахожусь до сих пор, но я уперся в стену.

         var val = $("description span").html();
        var numbers = val.match(/d /g);
        if (numbers != null) {
           console.log(numbers);
          //here goes the separate and wrap code that eludes me.
        }
 

предполагаемый результат:

 <div class="description"><span>This is some text, which we will reference in entry (<a href="myindex.html#330">330</a>) and also in entry (<a href="myindex.html#249">249</a>).</span></div>
 

Спасибо вам за любую помощь.

Комментарии:

1. Вам не хватает . в $("description span")

Ответ №1:

Как сказано в комментарии . , в вашем селекторе отсутствует a, за исключением того, что вы можете попробовать что-то вроде:

 $.each(numbers, function(n, t) {
  $(".description span").html($(".description span").html().replace(t, "<a href='#"   t   "'>"   t   "</a>"))
})
 

ДЕМОНСТРАЦИЯ

 var val = $(".description span").html();
var numbers = val.match(/d /g);
if (numbers != null) {
  $.each(numbers, function(n, t) {
    $(".description span").html($(".description span").html().replace(t, "<a href='#"   t   "'>"   t   "</a>"))
  })
} 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="description"><span>This is some text, which we will reference in entry (330) and also in entry (249).</span></div> 

Комментарии:

1. Быстрый, точный ответ. Большое вам спасибо! Если вы не возражаете, я спрошу, просто чтобы я мог понять, как работает ваш код, какова цель функции(n, t), если n не используется.

2. @Niwa n представляет индекс и не используется, но мы используем t и которые представляют объект, в данном случае 330 и 249