Javascript.RU

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

Вот в том то и вопрос, как должна обрабатываться ситуация выше, если spec посредь текста?
__________________
29375, 35
Ответить с цитированием
  #42 (permalink)  
Старый 15.08.2012, 15:24
Аватар для woojin
Аспирант
Отправить личное сообщение для woojin Посмотреть профиль Найти все сообщения от woojin
 
Регистрация: 13.08.2012
Сообщений: 38

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

согласен наверное это сложно сделать, тогда я предложил вариант из поста 14, при таком варианте в конце скрипт посмотрит есть ли что либо в получившемся оборачивании или нет, если нет, то выдаст ошибку)))
Ответить с цитированием
  #43 (permalink)  
Старый 15.08.2012, 15:30
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

woojin,
Думаю проще перерисовать тот кусочек PHP, *думаю devote его в пять сек нарисовал бы (там же чисто репит одного и того же вашего теперешнего дейстия)- можно конечно делать скрипт - но имхо.. но ведь - честно говоря это - через ж
Ответить с цитированием
  #44 (permalink)  
Старый 15.08.2012, 15:37
Аватар для woojin
Аспирант
Отправить личное сообщение для woojin Посмотреть профиль Найти все сообщения от woojin
 
Регистрация: 13.08.2012
Сообщений: 38

Deff,
ладно, чего голову ломать, как ни будь сам попробую сделать
примеров уже накидали, ещё может чего начитаю в доках по DOM
вдруг чего пропустил важное
Ответить с цитированием
  #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
Ответить с цитированием
  #46 (permalink)  
Старый 15.08.2012, 17:11
Аватар для woojin
Аспирант
Отправить личное сообщение для woojin Посмотреть профиль Найти все сообщения от woojin
 
Регистрация: 13.08.2012
Сообщений: 38

оооо!!!!!!!!!!!
вот это сработало))))
хотя бы пусть так будет - это лучше чем ломаный html на лицевой части сайта!!!!

сори в карму больше "треснуть" не могу, видать уже бил)))

Последний раз редактировалось woojin, 15.08.2012 в 17:13.
Ответить с цитированием
  #47 (permalink)  
Старый 15.08.2012, 19:02
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

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



<div class="messag"/>
<p><strong>Позиционные селекторы</strong><br />
Эти селекторы используются для выборки объектов на основе их положения по отношению к другим элементам, например на основе вложенности или наличия вложенных объектов, порядка следования в очереди (парные, не парные, первый элемент, последний элемент).</p>
<div>{spec}
<p>Выбор первого элемента:<br />
<span style="color: #333399;">$(«li:first»)</span> // здесь выбирается первый элемент &lt;li&gt;</p>
<p>Выбор последнего элемента:<br />
<span style="color: #333399;">$(«p:last»)</span> // здесь выбирается последний элемент p</p>
<p>Выбор каждого второго элемента начиная с 0 (индексация эллементов с нуля):<br />
<span style="color: #333399;">$(«p:even»)</span> // каждый второй параграф начиная с нулевого</p></div>
{/spec}
<p>Выбор каждого второго элемента начиная с первого:<br />
<span style="color: #333399;">$(«.mega-div:odd»)</span> // выбор каждого второго элемента с классом .mega-div начиная с первого (индексация с нуля)</p>
</div>




<div id="Test00" style="/*display:none;*/"/></div>
<script type="text/javascript">
var str='<div id=St>'+$(".messag").html()+'</div>';

function Replac(str) {

  a = $("#Test00")//.remove();

  a.append(str);//alert(">"+a.html());



  var b;
  a.find(":contains('\{\/spec\}')").each(function(){ b=$(this);  });

  var c;
  a.find(":contains('\{spec\}')").each(function() {c=$(this); });

  var ind1 = b.parents().length; //кол-во родителей

  var ind2 = c.parents().length; //кол-во родителей


  var B=b,C=c;  //alert(c.html())


  var arrB=[], arrC=[];  arrB[0]=b; arrC[0]=c;


  for(var i=0; i<ind1; i++) {

	for(var j=0; j<ind2; j++) {
	  if(j)arrC[i+1]=C;
          if(B.get(0)!=C.get(0)) {C=c.parents().eq(j);} else break;

	}
  	  if(i)arrB[i+1]=B;
  if(B.get(0)!=C.get(0)) {B=b.parents().eq(i);} else break;

  }
    alert(B.get(0)==C.get(0));


    if(i>0){
       b.html(b.html().replace(/\s*(\{\/spec\})\s*/ig,' '));
       arrB[i-1].after('\{\/spec\}')
    }


    if(j>0){
       c.html(c.html().replace(/\s*(\{spec\})\s*/ig,' '));
       arrC[j-1].before('\{spec\}');
    }

    $("div#St").replaceWith($("div#St").html())


    return a.html()

}

alert(Replac(str))
</script>

Собственно Переношу - выше ниже к ближайшим тегам от выделенного(если спец-теги не в одной упаковке

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

Jquery? Не, не слышал.
__________________
29375, 35
Ответить с цитированием
  #49 (permalink)  
Старый 15.08.2012, 19:13
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Aetae,
Если понравицо - переделаю два операнда
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как записывать теги HTML в команде TEXT? belilo2001 jQuery 2 28.07.2011 23:19
Jquery .html() вырезает теги ART-DELI jQuery 7 18.04.2011 11:49
Убирает теги подскажите KonstantinK Элементы интерфейса 12 09.07.2010 17:43
Как текст из responseText преобразовать в теги? Бобр AJAX и COMET 24 26.02.2010 04:37
Скрыть теги OPTION в SELECT Urfin jQuery 2 30.08.2009 15:16