Всплывающие подсказки с помощью jQuery. Введение
В этой статье я покажу, как можно с реализовать,часто используемый на сайтах, функционал — всплывающие подсказки. Работать подсказки будут на jQuery, поэтому не забудьте подключить эту библиотеку к своему проекту.
Смысл работы подсказок не сложный, все что нам потребуется, это обрабатывать три события: наведение курсора на элемент, отведение и событие, когда курсор перемещается по элементу. При наведении будем показывать подсказку, при отведении — скрывать, а при перемещении — двигать подсказку вслед за курсором. Еще один момент, который стоит упомянуть, это то, что для каждого элемента, к которому привязана подсказка, будет создаваться скрытый уникальный div с текстом подсказки, а при описанных выше событиях будем манипулировать этим div`ом.
На этом с теорией все, приступим к делу.
Всплывающие подсказки с помощью jQuery. Пример работы
Для начала приведу рабочий пример:
Подсказка с текстом. Наведи!
Без подсказки. Наведи!
Всплывающие подсказки с помощью jQuery. Код
А теперь код, начнем с верстки:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Всплывающие подсказки с помощью jQuery</title> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script> <style> .class_tooltip{ background-color: #FFC; border: 1px solid #000; border-radius: 0 7px 7px; display: none; padding: 5px; position: absolute; width: 200px; } </style> </head> <body> <br/> <span title="Текст всплывающей подсказки">Подсказка с текстом</span> <br/> <br/> <span title="Текст<br/>подсказки с <b>html</b> <i>тегами</i> внутри">Подсказка с html тегами</span> <br/> <br/> <span>Без подсказки</span> </body> </html>
И самое главное, js:
// функция для создания подсказок для элементов // element - имя элемента, например span function init_tooltip(element){ // перебираем все элементы на странице, для которых нужна подсказка $(element).each(function(num){ // проверяем у элемента наличие атрибута title и смотрим пустой он или нет if( $(this).attr('title') != "" && typeof($(this).attr('title')) != "undefined"){ // если есть title, то // создаем скрытый блок - подсказку с текстом $("body").append("<div class='class_tooltip tooltip_" + element + num + "'>" + $(this).attr('title') + "</div>"); // элемент, сама подсказка, только что созданная var one_tooltip = $(".tooltip_" + element + num); // навешиваем действия на события // при наведении курсора $(this).mouseover(function(){ // показываем подсказку one_tooltip.fadeIn(100); }); // при отведении курсора $(this).mouseout(function(){ // скрываем подсказку one_tooltip.fadeOut(100); }); // при нахождении курсора на элементе $(this).mousemove(function(curs_position){ // смещаем подсказку за курсором one_tooltip.css({ // делаем отступ по 10 пикселей сверху и слева от курсора left: curs_position.pageX + 10, top: curs_position.pageY + 10 }); }); } }); } $(document).ready(function(){ // создаем подсказки для всех span`ов init_tooltip("span"); });
На этом все, выкладываю исходники — сюда>.
Спасибо, всё просто, но не совсем понятно))) Вот например, в функцию передаете num, откуда он берётся, не могу понять.. Я ещё только начал в это всё вникать, так что строго не суди) Понимаю, что это как бы номер элемента, но где он всплывает, этот номер?