Приложение имеет дерево меню слева и окно просмотра данных выбранного пункта дерева справа. Навигация по дереву - кнопками <> и кликом по любому пугкту. При увеличении дерева до величины, превышающей вертикальный размер окна возникла проблема невидимости выбранного пункта в дереве при использовании кнопок нвигации. Проблема была решена установкой лифта дерева так, чтобы был виден выбранный пункт. Однако плавание лифта оказалось не совсем удобным при использовании выбора пункта в дереве. Было найдено, возможно, интересное решение - при использовании кнопок навигации плавное движение лифта, а при выборе пункта дерева кликом - сохранение и восстановление положения лифта.
function vspos() {
vsoffset = $('.leftmenu').scrollTop();
var links = document.getElementById("<%=TreeView1.ClientID %>").getElementsByTagName("a");
for (var i = 0; i < links.length; i++) {
links.setAttribute("href", links.getAttribute("href") + '&vsoffset=' + vsoffset);
}
}
Эта функция вызывается по событию Onclick div дерева. В ней во все ссылки дерева добавляется ключевой параметр vsoffset со значением положения лифта дерева. Далее происходит преход по выбранной ссылке и при обновлении страницы проверка ключевого параметра vsoffset
$(document).ready(function () {
function $_GET(key) {
var s = window.location.search;
s = s.match(new RegExp(key + '=([^&=]+)'));
return s ? s[1] : false;
}
if ($_GET('vsoffset')>0) {
vsoffset = $_GET('vsoffset');
$('.leftmenu').scrollTop(vsoffset);
}
else {
var destination = $(".selected").offset().top;
var dest_mod = destination - 165;
$('.leftmenu').animate({ scrollTop: dest_mod }, 1100);
return false;
}
});