2016-04-15 2 views
-1

Используя jQuery, мне нужно разобрать содержимое каждого тега <p> в отдельности, а затем заменить текст на новый текст.Как получить содержимое элемента p по одному за раз

код на данный момент выглядит следующим образом:

str = $('p').text(); 
str = str.replace('yadayada','yada'); 
$('p').text(str); 

Это в настоящее время становится все содержимое всех <p> тегов, конкатенации их затем заменить массивный блок текста в каждом <p> что близко, но не совсем то, что Хотелось бы это сделать.

Есть ли способ получить содержимое каждого блока <p> по одному и заменить его только содержимым? Я не знаю, какие иды или классы применяются к ним, поэтому необходимо использовать общий тег.

Любая помощь очень ценится! :)

+2

Используйте версию '.text()' с обратным вызовом: http://api.jquery.com/text/#text-function – Andreas

ответ

3

Используйте text(fn)

функция, возвращающая содержимое текста для установки. Получает индексную позицию элемента в наборе и старое текстовое значение в качестве аргументов.

$('p').text(function(_ text){ 
    return text.replace('yadayada','yada'); 
}); 
0

Вы можете использовать .each метод на полуботинки:

$('p').each(function (pEl) { 
    var text = pEl.textContent; 
}); 
1

Используйте версию text(), которая принимает функцию обратного вызова в качестве второго аргумента и вернуть заменяемое содержимое из обратного вызова

$('p').text(function(i, str) { 
 
    return str.replace('yadayada', 'yada'); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<p>yadayada-1</p> 
 
<p>yadayada-2</p> 
 
<p>yadayada-3</p> 
 
<p>4</p>

Смежные вопросы