найти текст в скобках в jQuery - PullRequest
0 голосов
/ 20 августа 2009

У меня есть текст на странице, и я хочу найти и удалить любой текст, найденный в скобках. Например:

<td>here is [my text] that I want to look at</td>

Итак, я хочу взять этот текст (мой текст), сохранить его в переменной и удалить его там, где он есть.

Ответы [ 3 ]

1 голос
/ 20 августа 2009

Вы можете обнаружить, что эта задача не так проста. Если у вас есть контроль над текстом до его отправки в веб-браузер, вы можете захотеть поместить <span class='bracket'>[my text]</span> вокруг текста, тогда вы можете легко сделать что-то подобное с jQuery:

$(".bracket").each(function() {
  // store the data from $(this).text();
}).remove();

Это может быть сделано с помощью регулярных выражений и jQuery, но есть проблемы, которые могут накапливаться при работе с текстом внутри атрибутов, таких как <input name='test[one][]' /> "Простое" регулярное выражение будет делать что-то вроде этого:

$("td").each(function() {
  var $this = $(this);

  var html = $this.html();
  var bracketText = [];

  // match all bracketed text in the html - replace with an empty string
  // but push the text on to the array.

  html = html.replace(/\[([^\]]+)\]/g, function() { 
    bracketText.push(arguments[1]);
    return "";
  });

  // put the new html in away and save the data for later
  $this.html(html).data("bracketText", bracketText);
});

В этом нет большой опасности, если вы уверены, что у вас не будет [] внутри тегов, отличных от текста.

1 голос
/ 20 августа 2009

Если вы используете jQuery, вы можете использовать регулярное выражение типа \[(.+)\] для $ ('body'). Text ().

РЕДАКТИРОВАТЬ: Извините, я мог немного подпрыгнул пистолет, давая вам этот ответ. Подумайте об этом еще несколько минут и попробуйте обновить это, добавив немного больше информации.

0 голосов
/ 20 августа 2009

Я закончил тем, что сделал следующее:

      $('#formQuizAnswers td.question').each(function(){
         var header = $(this).text().match(/-.*-/);
         $(this).text($(this).text().replace(header,''));
});

Я изменил свой текст, который я ищу, чтобы он был тире IE -Мой текст-

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...