Как заменить текст внутри span, используя jQuery

У меня есть промежуток как это:

<span class="savings">92% sale</span>

И я хочу изменить содержимое внутри пролета с "25% sale".

Я пытаюсь это:

$("span.savings").text(function () {
    return $(this).text().replace("", "25% sale"); 
});

Но этот метод добавляет "25% продажи" рядом с "92% продаж".

Как я могу это сделать?

4 ответа

Вы можете использовать регулярные выражения \d{2} выбрать 2-значный номер

$("span.savings").text(function(i, v) {
  return v.replace(/\d{2}/, "25");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<span class="savings">92% sale</span>

ОБНОВЛЕНИЕ: если вы просто хотите заменить весь текст, то нет необходимости в обратном вызове. Просто установите первый параметр в качестве нового текста.

$("span.savings").text("25% sale");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<span class="savings">92% sale</span>

Посмотрите другие ответы для jquery-специфического способа. Если вам не нужен jquery, вы можете сделать это (небезопасно для очень старых браузеров):

document.getElementsByTagName("span")
        .getElementsByClassName("savings")
        .forEach(function(el) { el.textContent = "25% sale" });

Здравствуйте, попробуйте это

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
<span class="savings">92% sale</span>
<script>
    $("span.savings").text(function (i, v) {
        return v.replace("92", "25");
    });
</script>

Другой способ - просто получить значение, заменить текст и вернуть его обратно.

var o = $("span.savings");
o.text(o.text().replace("92", "25"));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<span class="savings">92% sale</span>

Другие вопросы по тегам