Оставить ссылку при замене текста в ячейке - PullRequest
0 голосов
/ 19 октября 2019

Я пытаюсь заменить текст, но мне нужны ссылки, чтобы остаться нетронутыми. Когда я заменяю текст, он удаляет теги "a"

<th><a href="#">Leave Link</a> Oct 2019 <a href="#">Leave Link</a></th>

jQuery('th').text(function () {
    return $(this).text().replace('Oct', 'OCTOBER'); 
});

Текущий результат равен

<th>Leave Link OCTOBER 2019 Leave Link</th>

Требуется результат, равный

<th><a href="#">Leave Link</a> OCTOBER 2019 <a href="#">Leave Link</a></th>

Спасибо заответы, наконец, если у меня есть несколько текстовых изменений, могу ли я включить в одну и ту же функцию, вот так? Или кому бы я это сделал?

$('#calendar .month_header th').html(function () {
    return $(this).html().replace('Oct', 'OCTOBER'); 
     return $(this).html().replace('Nov', 'NOVEMBER'); 
     return $(this).html().replace('Dec', 'DECEMBER'); 
});

или это единственная альтернатива, подобная этой

jQuery('#calendar .month_header th').html(function () {
    return $(this).html().replace('Oct', 'OCTOBER');
});
jQuery('#calendar .month_header th').html(function () {
    return $(this).html().replace('Nov', 'NOVEMBER'); 
});
jQuery('#calendar .month_header th').html(function () {
    return $(this).html().replace('Dec', 'DECEMBER'); 
});

Ответы [ 3 ]

2 голосов
/ 19 октября 2019

Просто используйте .html вместо текста

const months = {
  "Oct": "OCTOBER",
  "Nov": "NOVEMBER",
  "Dec": "DECEMBER"
}

$('th').html(function() {
  const month = $(this).text().match(/(\w{3}) \d{4}/)[1];
  return $(this).html().replace(month, months[month]);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
  <thead>
    <tr>
      <th><a href="#">Leave Link</a> Oct 2019 <a href="#">Leave Link</a></th>
      <th><a href="#">Leave Link</a> Nov 2019 <a href="#">Leave Link</a></th>
      <th><a href="#">Leave Link</a> Dec 2019 <a href="#">Leave Link</a></th>
    </tr>
  </thead>
</table>
1 голос
/ 19 октября 2019

Jquery .text () удалит теги html.

Пожалуйста, используйте .html (), если вам нужно манипулировать html.

$('th').html(function () {
    return $(this).html().replace('Oct', 'OCTOBER'); 
});
1 голос
/ 19 октября 2019

Поместите текст, который вы хотите изменить, в элемент span.

<th><a href="#">Leave Link</a> <span>Oct 2019</span> <a href="#">Leave Link</a></th>
jQuery('th > span').text(function () {
    return $(this).text().replace('Oct', 'OCTOBER'); 
});

Вот JsFiddle .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...