Как расширить многоуровневые div с помощью javascript и сохранить расширенное условие в URL для совместного использования ссылок или ручного копирования / прошлого

0

Привет всем javascript-профи! Я ищу решение для расширения многоуровневых div, которое содержит ссылки на файлы doc/pdf с возможностью копирования/прошлых или совместного использования ссылок URL в расширенном состоянии. Я полный новичок с javascript и не уверен, каким образом это можно реализовать. Может быть что-то вроде " location.hash " и " on hashchange ". Вот код, который я использую для расширения/свертывания многоуровневых div на моем сайте:

$(document).ready(function(){   

$('.lib_element_sign_pos').toggle(function() {
    $(this).css("background-image", "url('/images/-.png')");
    if($(this).parent().parent().attr('class') == "lib_level_1")
        $(this).parent().parent().find('.lib_level_2').slideDown('slow');
    else if($(this).parent().parent().attr('class') == "lib_level_2")
        $(this).parent().parent().find('.lib_level_3').slideDown('slow');
    } , function() { 
    $(this).css("background-image", "url('/images/+.png')");
    if($(this).parent().parent().attr('class') == "lib_level_1")
        $(this).parent().parent().find('.lib_level_2').hide();
    else if($(this).parent().parent().attr('class') == "lib_level_2")
        $(this).parent().parent().find('.lib_level_3').hide();

});

    $('.lib_element_text').toggle(function() {
    $(this).parent().find('.lib_element_sign_pos').css("background-image", "url('/images/-.png')");
    if($(this).parent().parent().attr('class') == "lib_level_1")
        $(this).parent().parent().find('.lib_level_2').slideDown('slow');
    else if($(this).parent().parent().attr('class') == "lib_level_2")
        $(this).parent().parent().find('.lib_level_3').slideDown('slow');
    } , function() { 
    $(this).parent().find('.lib_element_sign_pos').css("background-image", "url('/images/+.png')");
    if($(this).parent().parent().attr('class') == "lib_level_1")
        $(this).parent().parent().find('.lib_level_2').hide();
    else if($(this).parent().parent().attr('class') == "lib_level_2")
        $(this).parent().parent().find('.lib_level_3').hide();

});

    $('.lib_element_about').click(function() {
        if($(this).next().css('display') == 'none')
            $(this).next().slideDown('100000');
        else
            $(this).next().hide();
        $('#lib_area').find('.lib_element_info').hide();
    } , function() { 
});

});

Будем рады любой помощи. Заранее спасибо!

1 ответ

0

Помогает ли Jquery - развернуть/свернуть на нескольких divs?

Кроме того, здесь приведены некоторые примечания:

1) функция.find() очень дорога, и вам следует избегать ее вызова столько раз. 2) Кажется, что ваш код очень зависит от упорядочения узлов DOM (существует много вызовов.parent(). Parent()). Если вы когда-либо меняете родителей детей из любых узлов DOM, вам придется изменить эту функцию во многих местах. 3) Удачи :)

  • 0
    Спасибо за быстрый ответ, но на самом деле за расширение / свертывание divs этот код работает, как и ожидалось. Может быть, это не лучшее решение, но оно работает. То, что я ищу, это сохранить расширенные условия divs, чтобы URL в основном для совместного использования.
  • 0
    Вы имеете в виду, что хотите сохранить состояние страницы? Например, если пользователь заходит на страницу и открывает элементы div, вы хотите, чтобы они оставались открытыми после закрытия и повторного открытия страницы?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню