Показать сообщение отдельно
  #8 (permalink)  
Старый 14.08.2012, 01:27
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Дзен-трансгуманист,
Туть при данной постановке задачи - рекурсия не слабая -

Воть мой предыдущий код
<script type="text/javascript" src="http://yandex.st/jquery/1.4.4/jquery.min.js"></script>






<div id=div></div>

<script type="text/javascript">
var str='\
<div>текст1\n\
<span>текст2\n\
{spec}\n\
</span>\n\
<p>текст3</p>\n\
<p>текст4</p>\n\
<p>текст5</p>\n\
<span>текст6\n\
{/spec}\n\
</span>\n\
текст7\n\
</div>';

alert(str)

function Replac(str) {
  var a = document.getElementById( 'div' );

  $(a).append(str);

  var c=$(a).find("span").each(function() {
     var b = $(this).html();//alert('b='+b)
     if(b.indexOf('spec}')!=-1){ //alert(b)

	b = b.replace(/\s*(\{\/?spec\})\s*/ig,' ');
	$(this).text(b);
	$(this).after('\n'+RegExp["$1"]);
alert($(a).html())
     }

}); return $(a).html()}

alert(Replac(str))
</script>


Вынимал из span и переставлял за ним
А тут нужно смотреть оба тега - в одном ли теге - если нет то....
Вдобавок обёртка тегов <p> в теги <p> (в исходной строке) - некоректна - при любой перестановке - Dom нарушается <p - теги абзацев - они не могут перекрывать иные теги абзацов

А как получается при обрамлении <p> (а не div, как Выше

<script type="text/javascript" src="http://yandex.st/jquery/1.4.4/jquery.min.js"></script>






<div id=div></div>

<script type="text/javascript">
var str='\
<p>текст1\n\
<span>текст2\n\
{spec}\n\
</span>\n\
<p>текст3</p>\n\
<p>текст4</p>\n\
<p>текст5</p>\n\
<span>текст6\n\
{/spec}\n\
</span>\n\
текст7\n\
</p>';

alert(str)

function Replac(str) {
  var a = document.getElementById( 'div' );

  $(a).append(str);

  var c=$(a).find("span").each(function() {
     var b = $(this).html();//alert('b='+b)
     if(b.indexOf('spec}')!=-1){ //alert(b)

	b = b.replace(/\s*(\{\/?spec\})\s*/ig,' ');
	$(this).text(b);
	$(this).after('\n'+RegExp["$1"]);
alert($(a).html())
     }

}); return $(a).html()}

alert(Replac(str))
</script>
(Причём в Опере и Мозилле - траблы слегка разняться

Последний раз редактировалось Deff, 14.08.2012 в 01:31.
Ответить с цитированием