jQuery flowplayer tooltip: показывать / скрывать события, вызываемые не в правильном порядке - PullRequest
0 голосов
/ 13 мая 2011

Я использую всплывающую подсказку для инструментов jquery.

Я создал всплывающую подсказку, похожую на эту ... подсказку, которая открывается только при нажатии и закрывается, когда я нажимаю кнопку закрытия (вызывая событие «closeTooltip»).

$('#request_button').tooltip({
        opacity: 1.0,
        position: 'top center',
        offset: [10, 0],
        events: {
            def: "openTooltip, closeTooltip",
            tooltip: "undefinedEvent, closeTooltip"
        },
        onBeforeShow: function() {
            alert("I will hide the existing tooltips first");
            $('#request_button').trigger('closeTooltip');
        },
        onShow: function() {
            alert("I have shown the new tooltip");
        },
        onBeforeHide: function() {
            alert("I have started hiding existing tooltips");
        },
        onHide: function() {
            alert("I have hidden all existing tooltips");
        },
        tip: "#tooltip_contents" // I am using same div for multiple trigger elements
    });

Я открываю / закрываю всплывающую подсказку, как это ..

$('#request_button').click(function() {
    $(this).trigger('openTooltip');
});
$('#close_tooltip').click(function() {
    $('#request_button).trigger('closeTooltip');
});

Поскольку у меня определено несколько элементов триггера, мне необходимо закрыть все открытые подсказки. Когда я попробовал это в событии onBeforeShow (), это не сработало так, как я хотел.

Предупреждающие сообщения появлялись в следующем порядке ...

  • Сначала я скрою существующие подсказки
  • Я показал новую подсказку
  • Я начал скрывать существующие подсказки
  • Я скрыл все существующие подсказки

Что он делает, так это скрывает текущую подсказку. Я хочу заказать ...

  • Сначала я скрою существующие подсказки
  • Я начал скрывать существующие подсказки
  • Я спрятал все существующие подсказки
  • Я показал новую подсказку

Как мне этого добиться? Что я здесь не так делаю?

Ответы [ 3 ]

2 голосов
/ 20 октября 2011

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

onBeforeShow просто скрывает все div, которые будут всплывающими подсказками.

Также добавляетсяво всплывающей подсказке.

$(".will-be-hidden").tooltip({
  onBeforeShow: function() { $('.unique-id').hide(); },
  events: { def: 'click, mouseout', tooltip: 'mouseover, click'},
  effect: 'slide',
  position: "center right",
  opacity: 0.7,
  relative: true,
  offset: [-20,-100],
  opacity: 1.0
}).dynamic({ right: { direction: 'left' } });

$('div.unique-id').append('<br /><br /><p style="cursor:pointer; color:#003B81">x click to close</p>');
1 голос
/ 13 мая 2011

Ну, на данный момент он показывает, прежде чем он прячется.Вызов onBeforeShow, onShow, onBeforeHide, onHide.Я предполагаю, что так работает плагин всплывающей подсказки.Вы говорите, что хотите, чтобы они были onBeforeShow, onBeforeHide, onHide, onShow, что довольно бессмысленно.

Я думаю, что вы хотите сделать, это просто просто скрыть все всплывающие подсказки, прежде чем показывать текущую, в этом случае не можетВы делаете это в событиях, которые вызывают всплывающую подсказку?Что-то вроде:

$("#request_button").click(function (e)
{
    e.preventDefault;
    $(".reference_to_tooltip_here").trigger("closeTooltip"); // or just .remove()/.hide();
    $(this).trigger("openTooltip");
});

Таким образом все подсказки закрываются перед открытием новой подсказки?Если нет никаких возможностей скрыть другие всплывающие подсказки в функциональности ваших плагинов, проигнорируйте события, с которыми они идут, и закройте их с помощью jQuery.

Также просто отметьте, у вас в настоящее время есть:

    onBeforeShow: function() {
    alert("I will hide the existing tooltips first");
    $('#request_button').trigger('closeTooltipEvent');

который, я думаю, должен быть trigger('closeTooltip'); в любом случае.

0 голосов
/ 16 мая 2011

у меня работал следующий код ...

$("#request_button").click(function (e)
{
    var tooltip_api = $(this).data('tooltip');
    if (tooltip_api.isShown(true)) {
        tooltip_api.hide();
    }
});

Надеюсь, это поможет.

...