Как заменить текст с помощью Jquery? - PullRequest
1 голос
/ 25 октября 2011

Возможно ли заменить имя на «анонимный» через jquery.но я все еще сохраняю свой якорный тег с конкретной ссылкой на комментарий.Я не мог понять это, поэтому я попытался удалить текст и оставить комментарий с

$('div.entryFooter').replaceWith($('div.entryFooter a')); 

, но он показал все содержимое всех трех элементов 'a' во всех моих div.

В идеале мне просто нужно, чтобы имя было заменено на «анонимное».Мое имя всегда будет отличаться, поэтому мне нужен способ найти имя после «Автор»

<div class="entryFooter">Posted by mjroodt at 24/10/2011 11:48<a href="/BlogPage.aspxid=20396&blogid=58906">Comments (1)</a></div>

<div class="entryFooter">Posted by mjroodt at 27/10/2011 13:33<a href="/BlogPage.aspx?id=12396&blogid=58945">Comments (2)</a></div>

<div class="entryFooter">Posted by mjroodt at 27/10/2011 15:59<a href="/BlogPage.aspx?id=14396&blogid=59963">Comments (7)</a></div>

Большое спасибо

Ответы [ 6 ]

4 голосов
/ 25 октября 2011

Здесь нет необходимости в jQuery.Просто используйте функцию Javascript replace([substring], [newstring]):

var value = $(".div.entryFooter").text().replace("James Johnson", "Anonymous");

Следует отметить, что это только для визуального отображения.Если вы не хотите, чтобы имена отображались вообще, вам нужно проанализировать их на уровне сервера или базы данных.

$(".div.entryFooter").each(function(){
    $(this).text($(this).text().replace("James Johnson", "Anonymous"));
});
3 голосов
/ 25 октября 2011

Этот цикл анализирует имя , каким бы оно ни было, и заменяет его на в этом случае anon:

$('div').each(function () {
   var $this = $(this),
    text = $this.text(),
    name = text.match(/Posted by (.+) at .+/)[1]
   $this.text(text.replace(name, 'anon')) 
});

Пример

Использование:

2 голосов
/ 25 октября 2011

Вы можете сделать это, используя несколько строк Jquery ниже. Это решение сохранит ваши теги привязки такими, какими они были, и вам не нужно знать имя, которое вы пытаетесь заменить.

$('.entryFooter').each(function(){
    var html_arr = $(this).html().split(' ');
    html_arr[2] = 'anonymous';
    $(this).html(html_arr.join(' '));
});

Пример

2 голосов
/ 25 октября 2011

Если вы хотите скрыть свое настоящее имя, вам нужно настроить ответ сервера.Только для визуальных изменений, используйте код ниже:

var name = "mjroodt";
var replaceBy = "anonymous";

//Generate a replace-all pattern
var pattern = new RegExp(name.replace(/([[^$.|?*+(){}])/g, '\\$1'), 'g');

//Loop through each `div.entryFooter` element
$("div.entryFooter").each(function(){
    var $this = $(this);
    var text = $this.text();
    //Check if the name exists. Otherwise, ignore
    if(text.indexOf(name) == -1) return;
    $this.text(text.replace(pattern, replaceBy));
})
1 голос
/ 25 октября 2011

Вы можете сопоставить любое имя и заменить его на «анонимный», используя приведенный ниже код,

text.replace(/by[ ][a-zA-Z0-9]*[ ]at/,"by anonymous at");

Вышеприведенное заменит содержимое между «by» и «at» в предложении », опубликованное xyzна "by", опубликованном анонимным на ".

0 голосов
/ 25 октября 2011

Я бы предложил вам обернуть текст в span и повторить его, чтобы изменить текст () с помощью RegExp:

. См. Рабочий пример для ваших требований: http://jsfiddle.net/mikhailov/ypRsP/

HTML

<div class="entryFooter">
    <span>Posted by mjroodt at 24/10/2011 11:48</span>
    <a href="/BlogPage.aspxid=20396&blogid=58906">Comments (1)</a>
</div>

<div class="entryFooter">
    <span>Posted by mjroodt at 27/10/2011 13:33</span>
    <a href="/BlogPage.aspx?id=12396&blogid=58945">Comments (2)</a>
</div>

<div class="entryFooter">
    <span>Posted by mjroodt at 27/10/2011 15:59</span>
    <a href="/BlogPage.aspx?id=14396&blogid=59963">Comments (7)</a>
</div>

JS

$('.entryFooter span').each(function(){
    var that    = $(this);
    var content = that.text();
    var t = content.replace(/^Posted by [A-Za-z]+/, "Posted by Anonymous");
    that.text(t);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...