Показать сообщение отдельно
  #45 (permalink)  
Старый 15.08.2012, 16:47
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

Сообщение от woojin Посмотреть сообщение
если брать в расчёт пример Deff,
тогда должно получиться вот так::: гдето же есть начало у предложения "ЭТА" т.е. гдето есть открывающий <p> значит перенос {spec} идёт к нему (перед ним) и так же получается и с "без перезагрузки" где то есть </p> значит {/spec} идёт после него

согласен наверное это сложно сделать, тогда я предложил вариант из поста 14, при таком варианте в конце скрипт посмотрит есть ли что либо в получившемся оборачивании или нет, если нет, то выдаст ошибку)))
Но это же нихрена не ожидаемое поведение. Юзеру нужно скрыть что-то конкретное, он это выделяет, а ему х*к весь блок в переработку. Будет как раз тот монолог что я отписал ранее.


Вообще, с вашей задачей тогда должен справиться такой говонкодик(код выражет только саму идею, его нужно хорошенько причесать)
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 spec( str ){
	var split = str.split('{/spec}');

	split = (
		split[0].replace(/<(\w+)[^>]*>[\s\S]*?\{spec\}[\s\S]*?<\/\1>/,function(a){
			return '{spec}' + a.replace('{spec}','')
		}) +
		'{/spec}' +
		split[1]
	).split('{spec}');
	
	str = split[0] + '{spec}' + split[1].replace(/<(\w+)[^>]*>[\s\S]*?\{\/spec\}[\s\S]*?<\/\1>/,function(a){
		return a.replace('{/spec}','') + '{/spec}'
	});


    return str
}
 
result = spec(str);
alert(result)
__________________
29375, 35
Ответить с цитированием