Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Выбрать текст внутри элементов, не включая теги (https://javascript.ru/forum/jquery/50790-vybrat-tekst-vnutri-ehlementov-ne-vklyuchaya-tegi.html)

TheDude 11.10.2014 16:14

Выбрать текст внутри элементов, не включая теги
 
Здравствуйте, уважаемые форумчане. Форма блока на сайте, где выводится комментарий
<div class="comment">
Сам текст комментария
</div>

при нажатии кнопки "ответить" появляется форма коммента, к нему добавляется текст коммента, на который дается ответ в виде цитаты и основной текст ниже
В итоге ответный комментарий имеет вид
<div class="comment">
 <q>Цитатка комментария, на который был дан ответ<hr><br></q>
Сам текст сообщения
</div>


Дальше, если цитирую сообщение уже с цитатой, то берется весь текст вместе. Я же хочу сделать так, чтобы при ответе цитата, если она есть , отбрасывалась и подставлялся только текст комментария, как в первом случае. И уже получалось что-то вроде после ответа на коммент с цитатой:
<div class="comment">
 <q>Сам текст сообщения<hr><br></q>
Ответ на ответ, лол
</div>


Тут узнаю родителя, затем текст дочернего элемента
var parentComment2 = $(this).parent().children(".comment").text();


Нужно взять текст из блока, но отбросить цитату, если она есть, т.е. строку <q>Цитатка комментария, на который был дан ответ<hr><br></q> не брать

Буду благодарен за помощь нубу)

TheDude 11.10.2014 16:21

Кстати, само сообщение добавляется в базу данных с bb кодом, т.е. виде: [q]Цитата[/q][hr][]br]Текст сообщения
И выводится в блок div.comment. Все сложно там реализовано для меня через клоны формы т .д. , поэтому не могу придумать, как текст сообщения отдельно запихать в отдельный блок с классом.

utb 11.10.2014 16:58

делай проверку на наличия в комментарии больше чем 1 цитата и удаляй первую, не ?

TheDude 11.10.2014 17:04

Цитата:

Сообщение от utb (Сообщение 334860)
делай проверку на наличия в комментарии больше чем 1 цитата и удаляй первую, не ?

Напиши код, если не сложно) Не совсем догоняю)
Наверное через регулярки, да?
Хотя если я удалю цитату, то и в посте она удалится предыдущем. МНе же просто нужно исключить её из текста.

рони 11.10.2014 17:45

TheDude,
вариант ...
<!DOCTYPE HTML>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
     $(function(){
     var last =  $(".comment")[0].lastChild;
     alert($(last).text())
});
  </script>
</head>

<body>
<div class="comment">
 <q>Сам текст сообщения<hr><br></q>
Ответ на ответ, лол
</div>
</body>

</html>

TheDude 11.10.2014 17:56

Спасибо большое!! Очень помогли)))

Aetae 11.10.2014 18:22

Только если там будет больше одной строчки - работать не будет.

Как-то так:
<!DOCTYPE HTML>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
    $(function(){
      var $last =  $(".comment").clone();
      $last.find('q').remove();
      alert( $last.text());
    });
  </script>
</head>
 
<body>
<div class="comment">
 <q>Сам текст сообщения<hr><br></q>
Ответ на ответ, лол
</div>
</body>
 
</html>

TheDude 11.10.2014 18:59

И вам спасибо, но тот код прекрасно работает, если более 1 строчки)

Aetae 11.10.2014 19:35

TheDude, если там будет <br> - перестанет.


Часовой пояс GMT +3, время: 08:28.