Попытка .replace () без успеха - PullRequest
0 голосов
/ 26 июля 2011

У меня есть несколько строк HTML-кода, которые выглядят так:

<li><a href="#" class="lstItem">Testing jQuery [First Bracket]</a></li>
<li><a href="#" class="lstItem">Loving jQuery [Second one]</a></li>

Я пытаюсь заменить то, что находится внутри кронштейна, на ничто onLoad, например:

var item = $(".lstItem").text();
var match = item.match(/\[(.*?)\]/);
item = item.replace(match[0], "");

Но ничего не меняется. Что не так и как это исправить?


После использования предложения jimbojw я получаю Uncaught ReferenceError: text is not defined в этой конкретной строке:

oldtext = $item.text,

Ответы [ 4 ]

8 голосов
/ 26 июля 2011

item - это переменная, содержащая строку, а не указатель на текст.Если вы хотите изменить текст, вы должны установить его снова, в отношении $(".listItem").text(item)

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

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

$(".lstItem")
  .each(function(index, item) {

    var
      $item = $(item),
      oldtext = $item.text(),
      match = oldtext.match(/\[(.*?)\]/),
      newtext = oldtext.replace(match[0], '');

    $item.text(newtext);

  });
1 голос
/ 26 июля 2011

Наряду с ответом jimbojw $(".lstItem").text() извлечет весь текст внутри ваших <a/> элементов. Один из способов справиться с этим - передать function(i,t){} в метод .text().

$(".lstItem").text(function(i, text){
    var match = text.match(/\[(.*?)\]/);
    return text.replace(match[0], "");    
});

Простой пример на jsfiddle

1 голос
/ 26 июля 2011

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

$(".lstItem").each(function() {
   $(this).html(
       $(this).html().replace(/\[(.*)\]/, "")
   );
});

см. Ваш пример в jsFiddle: http://jsfiddle.net/eKn3Q/7/

0 голосов
/ 26 июля 2011

также ваше регулярное выражение может быть проще.

var item = $(".lstItem").text();
var match = /\[(.*?)\]/;
$(".listItem").text(item.replace(match,""));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...