Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   вызов tooltip() сворачивает accordion после перезагрузки (https://javascript.ru/forum/dom-window/64327-vyzov-tooltip-svorachivaet-accordion-posle-perezagruzki.html)

MargaretT 03.08.2016 13:51

вызов tooltip() сворачивает accordion после перезагрузки
 
На странице есть несколько экспандеров accordion.
В некоторых из них к строкам таблицы необходимо применить tooltip.
Для всех экспандеров запоминается их состояние, если пользователь покидает страницу и при следующем посещении страницы для этого пользователя все что он оставил свернутым - отображается свернутым, все что он развернул - развернуто.

Поблема
После вызова tooltip(), те экспандеры, которые содержат строки с подсказкой, после перезагрузки страницы находятся всегда в свернутом виде. Не могу разгадать эту магию, помогите, пожалуйста.

warren buffet 03.08.2016 16:02

Ты бы еще картинку из сказки "Как Иван мучал щуку" запостил. Короче, по щучьему велению, по моему хотению, скрывайтесь экспандеры. Иди проверяй.

MargaretT 03.08.2016 16:19

warren buffet, если тебе чем-то не нравятся картинки, то можешь на них не смотреть. Сотрясать воздух каждый может. Если есть желание помочь, но не понятно описание проблемы, то можно конкретизировать что именно непонятно. Или просто лишь бы что-нибудь написать?

Spass 03.08.2016 16:23

Он хотел сказать что по картинкам мы тут не шаманим, каким образом мы тут угадаем что не так и кто такой tooltip()? :)

MargaretT 03.08.2016 16:25

Spass,
Цитата:

кто такой tooltip()
: http://v4-alpha.getbootstrap.com/components/tooltips/

Spass 03.08.2016 16:34

Покажите тогда и код где этот tooltip вызывается

MargaretT 03.08.2016 16:35

Spass,
$("[rel='tooltip']").mouseover(function() {
        $("[rel='tooltip']").tooltip({ container: 'body'});
    });



Дело не в самом тултипе, он работает отлично, дело в том, как вызов тултипа влияет на экспандер. Если закомментировать строку вызова tooltip или просто не наводить мышь на строку таблицы, то экспандер работает в обычном режиме. Но стоит только вызвать тултип, как после первого обновления страницы экспандер свернется и будет сворачиваться после каждого обновления.

Spass 03.08.2016 16:39

Я правильно понял, tooltip инициализируется только после наведения мыши на элемент? Но вы хотите чтобы оно работало сразу после загрузки страницы?

MargaretT 03.08.2016 16:41

Нет, tooltip и должен инициализироваться после наведения мыши на элемент. Я хочу чтобы при этом не сворачивался экспандер, внутри которого размещен этот элемент.

Spass 03.08.2016 16:44

Показывайте тогда и код разворачивания экспандера. :)

Spass 03.08.2016 16:47

tooltip можно инициализировать сразу после загрузки страницы, попробуйте сразу повесить его а потом уже раскрывать нужные экспандеры.

MargaretT 03.08.2016 16:50

Spass,
вот описание самого экспандера: http://v4-alpha.getbootstrap.com/components/collapse/

разворачивается через якорь, очень громоздко будет копировать код

MargaretT 03.08.2016 16:55

Если инициализировать tooltipпосле загрузки страницы ничего не меняется. Суть в том, что экспандер запоминает состояние, в котором его пользователь оставил последний раз, но после инициализации tooltip, он игнорит это состояние и сворачивается

Spass 03.08.2016 17:00

Может вы можете выложить работающий пример и дать ссылку?

Каким образом он "запоминает"?

MargaretT 03.08.2016 17:27

В куки записывается состояние экспандера

Проблема решена вызовом функции stopPropagation() для события показа tooltip.

.tooltip({
        container: 'body',
    }).on('show', function (e) {
        e.stopPropagation();
    });


Видимо из-за вызова тултипа состояние экспандера не могло перезаписаться, поэтому он был всегда свернут.

Spass, спасибо, что попытались вникнуть в суть проблемы!

warren buffet 03.08.2016 17:43

Цитата:

Сообщение от MargaretT
В куки записывается состояние экспандера

И теперь расскажи мне милая, как я бы мог узнать про то, что у тебя щелчок бублится до элемента, до которого не должен бублиться, по твоей суперской картинке?

В любых отношениях с куками, надо сперва смотреть ЧТО там записалось и потом смотреть КАК прочиталось, ибо записаться может что угодно, куки можно изменить как угодно и прочитается хрен знает что.

И еще, можно подумать браузер устанет писать в куки после каждого нажатия, типа у него ручки отвалятся, поэтому мы должны сделать onbeforeunload. )))


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