Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Закрытие блока по нажатию в любом месте (https://javascript.ru/forum/dom-window/57577-zakrytie-bloka-po-nazhatiyu-v-lyubom-meste.html)

рони 23.03.2016 20:05

d1mka21,
какую эту ? проще написать ещё :) пишите лаконично html и css и описание

d1mka21 25.03.2016 14:40

рони, я воспользовался Вашей открывашкой, только поменял классы
$(function() {
    var $but = $(".profile_link"),
        $blocks = $(".profile-block");
    $but.each(function(i, elem) {
        var $el = $(elem);
        $el.click(function() {
            $but.not($el).removeClass("active-menu-item");
            $el.toggleClass("active-menu-item");
            $blocks.filter(function(j, el) {
                i == j && $(el).slideToggle();
                return i != j
            }).slideUp();

        })
    });
    $('html').click(function (event) {
          if ($(event.target).closest('.profile_link, .profile-block' ).size() && !$(event.target).is('.closeButton')) return;
          $but.filter('.active-menu-item').click()
      });
});

где .profile_link - это класс ссылки
.profile-block - это класс блока который открывается и скрывается;
Что бы сделать, прокрутку к открывшемуся блоку, попробовал добавить:
$(".profile_block").scrolTo()

после
}).slideUp();

но не сработало(
Куда правильнее вставить?
И еще такой вопрос, с этой открывашкой при клике на ссылку передается в адресную строчку "#", это никак не повлияет потом на отправку формы?
В том что используется в href="#", ничего страшного нет?
И сейчас получается, если кликать на ссылку, но страница подпрыгивает вверх, это из-за href="#", как понял, это как-то убрать можно?!)
И у меня на битриксе есть код стандартный, может его лучше доделать, что бы была прокрутка к выпавшему блоку и мог открываться только один?
Вот тут примерная верстка с битрикса html/css:
https://jsfiddle.net/d1mka21/ecesw2mn/
Сам скрипт, тут https://jsfiddle.net/d1mka21/2y3xpreo/

рони 26.03.2016 17:26

d1mka21, вариант
$(function() {
    var $but = $(".profile_link"),
        $blocks = $(".profile-block");
    $but.each(function(i, elem) {
        var $el = $(elem);
        $el.click(function(event) {
            event.preventDefault();
            $but.not($el).removeClass("active-menu-item");
            $el.toggleClass("active-menu-item");
            $blocks.filter(function(j, el) {
                if(i == j) {var vis = $(el).slideToggle().is(":visible");vis && $(el).scrolTo()} ;
                return i != j
            }).slideUp();

        })
    });
    $('html').click(function (event) {
          if ($(event.target).closest('.profile_link, .profile-block' ).size() && !$(event.target).is('.closeButton')) return;
          $but.filter('.active-menu-item').click()
      });
});

d1mka21 28.03.2016 10:17

Вложений: 1
рони,
при таком варианте, у меня они все открываются и все закрываются, то есть если один открыт то второй когда открывается первый не закрывается(
и не прокручивается(
И при клике на ссылку в консоле появляются ошибки(

рони 28.03.2016 10:49

d1mka21,
пас

d1mka21 28.03.2016 11:03

рони,
ладно, спасибо большое)
Буде чет искать)


Часовой пояс GMT +3, время: 23:22.