Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Можно ли захватить дополнительный текст вокруг выделенного? (https://javascript.ru/forum/jquery/27026-mozhno-li-zakhvatit-dopolnitelnyjj-tekst-vokrug-vydelennogo.html)

T-sh 01.04.2012 22:15

ok, с удалением тяжеловато.. вернее, много лишних движений будет.

предлагаю такой вариант:

по клику на нужный элемент (слово) присваиваем ему id = "clicked".

дальше всё тоже самое, с поиском вхождения :) после нужных действий — атрибут удалить)

zebra741258963 01.04.2012 23:08

Я пока просто свой текст в <b> менял на временный уникальный код, потом искал позицию этого текста, и брал символы до и после него, после чего менял текст обратно (единственный минус - может дёрнуться экран от временного изменения текста).

А всё же - что я не правильно делал убирая обёртку?
И почему я не вижу параметра jQuery######### внутри <B> при коде:
$('b').click(function() 
  {
  $(this).wrap('<strong>');
  alert($(this).parent().html());
  });

T-sh 01.04.2012 23:12

ну, если обертка убирается — всё делаете так :)

а jQuery######### — это, имхо, что-то вроде временной транзакции или типа того, которая используется только самой библиотекой, поэтому её не видно нигде, кроме как в отладчиках. я бы не стал заморачиваться по этому поводу.

zebra741258963 02.04.2012 00:37

Так нет же... я наоборот пишу что обёртка не убирается...
Ставлю через wrap, а убрать не могу... Делают так:
<p>Наша Маша громко плачет <b>уронила</b> в реку мячик...</p> 

<script src=jQuery.js></script>
<script>
$(document).ready(function()
 {
 $('b').click(function() 
  {
  $(this).wrap('<strong>');
  x=$(this);
  z=$(this).parent();
  z=x;
  alert($('p').html());
  });
 });
</script>

Но <strong> всё равно остаётся :(

T-sh 02.04.2012 00:49

блин, вот что значит воскресенье..

не надо ничего заменять и присваивать..

$(this).unwrap('<strong>');

B@rmaley.e><e 02.04.2012 01:08

Цитата:

Сообщение от zebra741258963
Но ведь тег "В" не разбивает фрагмент параграф на соседние узлы!

Это Вы так думаете.
<div>Hello, <strong id="e">%username%</strong>! I need your bike and clothes.</div>

<script>
document.getElementById('e').onclick = function () {
  alert([
    'Current node content: ' + this.innerHTML,
    'Preceding text: ' + this.previousSibling.nodeValue,
    'Succeeding text: ' + this.nextSibling.nodeValue
  ].join('\n'))
}
</script>

zebra741258963 02.04.2012 15:11

T-sh,
Хорошо, а в чём была моя ошибка? Почему не получалось перекинуть текущий объект в родителя?

T-sh 02.04.2012 15:19

Цитата:

Сообщение от zebra741258963 (Сообщение 166508)
T-sh,
Хорошо, а в чём была моя ошибка? Почему не получалось перекинуть текущий объект в родителя?

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

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


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