qTip: не допускать скрытие кончика два раза подряд - PullRequest
0 голосов
/ 30 сентября 2011

Прежде всего, извините, ребята, что разместили вопрос здесь. Форум поддержки кажется почти мертвым.

Итак, я столкнулся с ошибкой в ​​плагине qtip или в моем коде. Когда я вызываю .qtip('hide') два или более раз подряд, всплывающая подсказка будет скрыта и больше не будет отображаться при вызове .qtip('show').

Способ размножения:

el.qtip('hide');el.qtip('hide');el.qtip('show'); \\ -> bug, the tip is not shown el.qtip('hide');el.qtip('hide');el.qtip('hide');el.qtip('show'); \\ -> bug, same

Последовательный show хорошо работает ...

el.qtip('show');el.qtip('show');el.qtip('hide');el.qtip('show'); \\ -> pass

Непоследовательный hide также хорошо работает:

el.qtip('hide');el.qtip('show');el.qtip('hide');el.qtip('show'); \\ -> pass

Вопрос:

Как заставить вещи работать? API qTip не дает мне способа узнать, скрыт или показан подсказка. Как я могу это знать? Я могу проверить, скрыт ли qTip, чтобы не скрывать его дважды.

Возможный источник проблемы:

Qtip, вызывающий ошибки, построен довольно хитрым способом:

qtip({
            content: text,
            position: {
                corner: {
                    target: 'rightMiddle',
                    tooltip: 'leftMiddle'
                }
            },
            style: {
                tip: {
                     corner: 'leftMiddle',
                },
                border: {
                    radius: 11,
                    width: 4
                },
                name: 'red'
            },
            show: {
                delay:0,
                ready: true,
                fixed:true,
                when: { target: false, event:false },
                effect: function() {//.stop(true, true)
                    $(this).effect("drop", { direction: "down", mode: "show" }, 240)
                }
            },
            hide: {
                delay:0,
                fixed:true,
                when: { target: false, event:false },
                effect: function() {//.stop(true, true)
                    $(this).effect("drop", { direction: "down", mode: "hide" }, 240)
                }
            }
        })

Чтобы проверить это, вы можете перейти на www.buxdial.com/oldo/register.php, ввести что-нибудь в поле капчи, перейти к отладчику и запустить тесты, заменив el на code.TIP

1 Ответ

0 голосов
/ 12 октября 2011

Если у вас есть только один экземпляр qtip на вашей странице, вы можете проверить, отображается ли qtip в данный момент, выполнив поиск класса qtip-active.Вот пример использования jquery для проверки:

if($('div.qtip-active').length) {
   alert("qtip is currently showing");
}
else {
   alert("qtip is hidden");
}
...