2010-12-11 5 views
11

Мне интересно, знает ли кто-нибудь о плагине или учебнике о том, как запускать всплывающую подсказку после вызова ajax. На данный момент я использую jQuery Tools для создания всплывающих подсказок. Но я не хочу, чтобы всплывающие подсказки запускались на событии mouseOver; скорее, я хочу, чтобы они показывали после вызова ajax. Я не могу найти какую-либо документацию или примеры того, как это сделать. Например:Программно показать всплывающую подсказку после вызова ajax

<a class="vote">Vote</a> 

<div id="tooltip"> 
Some tooltip with a message. 
</div> 

$.ajax({ 
    context: this, 
    dataType: 'json', 
    success: function(response) { 
     if (response.result == "success") { 
// SHOW TOOL TIP HERE 
     } 
     else { 
// SHOW ANOTHER TOOL TIP HERE 
      } 
     }); 

Путь Jquery Tools работает, просто обязательный элемент для наконечника инструмента как таковые: (но это вызывает всплывающую подсказку, чтобы открыть на MouseOver)

$("#myElement").tooltip(); 

Существует АНИ с событиями, включенными в инструменты jQuery, но я не знаю, как показывать всплывающую подсказку только после Ajax! Другим осложняющим фактором является наличие одной и той же подсказки (или нескольких подсказок) на нескольких элементах.

ответ

4

Вот пример того, как отобразить «подсказку» или всплывающее диалоговое окно после некоторого события. Здесь нет ajax, но просто используйте действие щелчка ссылки.

$(document).ready(function() { 

    $("#vote").click(function(evt) { 
     evt.preventDefault(); 

     // Do your ajax 
     // Show the popup 
     $("#tooltip").show(); 
    }); 

    $("#tooltip").click(function() { 
     $(this).hide(); 
    }); 

}); 

http://jsfiddle.net/Tm8Lr/1/

Надеется, что это поможет вам начать работу.

Bob

+0

Спасибо rcraves. Я действительно получил всплывающую подсказку, чтобы показать и скрыть. Единственный трюк заключается в том, чтобы сделать его положение относительно щелчка ссылки. (У меня есть несколько ссылок на голосование на странице.) – Mohamad

17

Не удалось ли просто вызвать событие mouseover после привязки всплывающей подсказки?

$('#myElement').tooltip().mouseover(); 
+0

Карим, я никогда не думал об этом, если быть честным. Я дам ему попробовать. – Mohamad

+0

просто попробовал работу. Благодаря!так просто –

+1

Это спасло мой день! : D – Entea

5

Посмотрите на tooltip documentation (особенно scripting API) и how their API works.

Так он должен работать с:

if (response.result == "success") { 
    $('#myElement').data('tooltip').show(); 
} 
else { 
    // don't know which other tooltip you want to show here 
} 

You can also specify at which events the tooltip should be shown (так что вы, вероятно, можно исключить mouseover или изменить его на то, что вы знаете, никогда не срабатывает на этом элементе (например, change)).

+0

@felix, хороший ответ, я не смотрел подсказку api, в моем проекте я написал свою собственную подсказку, вот почему я ответил так: – kobe

+0

Felix, спасибо за ответ. Одна из проблем, о которых я не упоминал (пока не уточнил вопрос), имел несколько элементов, требующих всплывающей подсказки. Может ли всплывающая подсказка быть повторно использована в любом случае, или мне нужно создать новую всплывающую подсказку для каждого элемента? Я думаю, что данные («подсказка») связаны только с одним элементом. – Mohamad

+0

@mel вы можете дать общее имя класса всем элементам, которые вы хотите, и использовать их, что должно исправить вашу проблему. – kobe

1

Мел,

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

После того, как ваш Аякс завершает показать подсказку по jquerys показать

$('#tooltipid').show(); 

, если вы хотите, чтобы скрыть через несколько секунд вы можете сделать это также с помощью JQuery или JavaScripts SetTimeout();

Я думаю, что все вы хотите, когда Ajax завершает у вас есть какой-то новый HTML в DOM, и вы хотите, чтобы показать некоторое всплывающее окно выше этого код справа,

Надеется, что это помогает

+0

gov, большое спасибо. Я думала об этом. Но так как у меня на странице есть много элементов, которые требуют этого, кажется, что это сложно сделать, чтобы направить его на следующий элемент. – Mohamad

+0

@Mel thats cool, но я думаю, вы можете использовать тот же api, чтобы сделать .show() сделал это сработало для вас – kobe

2

Вы можете использовать функцию триггера для запуска другой функции, привязанной к mouseOver.

$('#ElemWithTootip').trigger('mouseOver'); 
Смежные вопросы