Показать сообщение отдельно
  #12 (permalink)  
Старый 28.06.2011, 17:47
Профессор
Отправить личное сообщение для tadjik1 Посмотреть профиль Найти все сообщения от tadjik1
 
Регистрация: 07.06.2011
Сообщений: 315

ну вот, дальше — хуже.

код чуть изменил, чтобы слэш не прыгал, добавил простенькое условие:
$('.hide-next').click(function() {
    var parentEls = $(this).parents("div").prev('.hide-next')
            .map(function () {
                    return $(this).text();
            })
            .get().join("/");
    if(parentEls == "") { parentEls = $(this).text(); }
    else { parentEls =  parentEls+"/"+$(this).text(); }
    window.location.hash = parentEls;
 });


но теперь мне нужно по сформировавшейся ссылке открыть все эти элементы.
получается что-то вроде

var hash = decodeURIComponent(location.hash.substring(1));
		
		var hashEls = hash.split("/");
		
		if($("*").find(".hide-next:contains("+hashEls[0]+")").trigger("click")) { 
		for(var num = 1;num<hashEls.length;num++) {
				$("*").find(".hide-next:contains("+hashEls[num]+")").trigger("click");
			}
		}


но это не совсем то опять что нужно, потому что contains ищет просто совпадение и в итоге разворачивает всё, что только можно. скажите, пожалуйста, как лучше реализовать поиск в этом случае? нужно, чтобы только «те» элементы открывались, т.е. элементы с одинаковым text() могу встречаться на одной странице. я так понимаю, надо как-то связывать с иерархией, ориентироваться на предков и детей. но то ли конец дня, а скорее полная безрамотность в jquery не позволяют додумать код.
Ответить с цитированием