Сообщение от 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)