jQuery, якщо div містить цей текст, замініть цю частину тексту


79

Як сказано в заголовку, я хочу замінити певну частину тексту в div.

Структура виглядає так:

<div class="text_div">
    This div contains some text.
</div>

І я хочу замінити лише "містить" на "привіт всім", наприклад. Я не можу знайти рішення для цього.


Як щодо того, якби текст був "Цей div містить якийсь текст, який містить кілька букв", і я хочу змінити 1-й, а не 2-й. Або просто виберіть будь-яке слово, і воно буде змінено на попередньо визначене.
stockBoi

Відповіді:


145

Ви можете використовувати textметод і передати функцію, яка повертає змінений текст, використовуючи власний String.prototype.replaceметод для заміни:

​$(".text_div").text(function () {
    return $(this).text().replace("contains", "hello everyone"); 
});​​​​​

Ось робочий приклад .


2
Ви можете використовувати регулярний вираз / iwantreplacethis / g для всіх
випадків

1
Щиро дякую за це :) одне просте запитання: чому це не працює без повернення
Аарон Метьюз

2
@AaronMatthews Ця відповідь була дуже давно, але я вважаю, що це було б тому, що textметод jQuery , передаючи функцію, встановлює для тексту виділення значення, що повертається для цієї функції. Без returnтексту текст нічим би не був замінений.
Джеймс Аллардіка,

12

Якщо це можливо, ви можете обернути слова (слова), які потрібно замінити, у тег span, наприклад:

<div class="text_div">
    This div <span>contains</span> some text.
</div>

Потім ви можете легко змінити його вміст за допомогою jQuery:

$('.text_div > span').text('hello everyone');

Якщо ви не можете обернути його в тег span, ви можете використовувати регулярні вирази.



6

Дуже просто, просто використовуйте цей код, він збереже HTML, видаляючи лише розгорнутий текст:

jQuery(function($){

    // Replace 'td' with your html tag
    $("td").html(function() { 

    // Replace 'ok' with string you want to change, you can delete 'hello everyone' to remove the text
          return $(this).html().replace("ok", "hello everyone");  

    });
});

Ось повний приклад: https://blog.hfarazm.com/remove-unwrapped-text-jquery/


3

Ви можете використовувати селектор contains для пошуку елементів, що містять певний текст

var elem = $('div.text_div:contains("This div contains some text")')​;
elem.text(elem.text().replace("contains", "Hello everyone"));

U


це замінить більше одного слова, якщо мій рядок містить більше одного цільового слова, що буде тоді?
Tamaghna Banerjee
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.