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.