ну вот, дальше — хуже.
код чуть изменил, чтобы слэш не прыгал, добавил простенькое условие:
$('.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 не позволяют додумать код.