Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.09.2011, 19:12
Аватар для SouthTracer
Новичок на форуме
Отправить личное сообщение для SouthTracer Посмотреть профиль Найти все сообщения от SouthTracer
 
Регистрация: 01.09.2011
Сообщений: 2

jQuery tooltip проблема
Сразу предупреждаю что я самоучка, и с профессиональной точки зрения полный чайник, так что всю критику, и мои недочеты говорите сразу. Здравая критика залог того что в следующий раз я буду умней.

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

(function($) {
$.fn.tooltip = function(options){
	$('body').append('<div class="tooltip"></div>');
	var options = jQuery.extend({
		title: '',
		top: 0,
		left: 0
	},options);
	return this.each(function() {
			$(this).mouseover(function(){
				options.top = $(this).offset().top - 25;
				options.left = $(this).offset().left - $(this).width()/2;
					options.title = $(this).attr('title');
					$('.tooltip').text(options.title)
					.css('display', 'block')
					.css('top', options.top)
					.css('left', options.left);
					$(this).attr('title', '');
			});
			$(this).mouseout(function(){
				$(this).attr('title', options.title);
				$('.tooltip').css('display', 'none');
			});
			
	});
	
};
})(jQuery)


А вот и html:

<div class="min_images">
    <a href="#" class="active" title="idsfisdio">
        <img src="images/min_img_1.jpg" alt="" />
    </a>
    <a href="#" title="idsfisdio">
        <img src="images/min_img_2.jpg" alt="" />
    </a>
    ...
    <a href="#" title="idsfisdio">
        <img src="images/min_img_7.jpg" alt="" />
    </a>
</div>


В общем проблема вот в чем, есть еще один скриптик который присваивает класс active:

<script type="text/javascript">
	$(function(){
		$(".min_images a").click(function(){
			$(".min_images a").removeClass('active');
			$(this).addClass('active')
		})
	}) 
</script>


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

ЗЫ: очень надеюсь что не ошибся темой, если что извеняйте не нарошно.

Последний раз редактировалось SouthTracer, 01.09.2011 в 19:14.
Ответить с цитированием
  #2 (permalink)  
Старый 02.09.2011, 08:29
Аватар для crayday
Аспирант
Отправить личное сообщение для crayday Посмотреть профиль Найти все сообщения от crayday
 
Регистрация: 30.08.2011
Сообщений: 61

Возможно, туплю, но не вижу связи между тултипами и ссылками с классом active и без него.

По теме - такие вещи гораздо лучше делать при помощи css (получается быстрее во всех смыслах).
К коду: функция offset достаточно затратная и уж как минимум её вызов следует сохранять в переменную, а затем к ней обращаться.
Ответить с цитированием
  #3 (permalink)  
Старый 02.09.2011, 08:46
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

SouthTracer,
в вашем коде я не увидел как напоминания о классе active, так и вообще активного взаимодействия с css. ели я ошибся, скажите линию, на которой упоминается этот класс

Сообщение от crayday Посмотреть сообщение
К коду: функция offset достаточно затратная и уж как минимум её вызов следует сохранять в переменную, а затем к ней обращаться.
к коду замечаний огромное количество, например
  1. многократные выховы $.css ( можно было засунуть все в один вызов, передав хеш)
  2. использование options.left и options.right (можно было просо поставить значения в css и не заморачиваться, а поставить только options.title, который используется при mouseout )
  3. нет кеширования найденных элементов - я про .tooltip. её вообще можно не искать.
Ответить с цитированием
  #4 (permalink)  
Старый 02.09.2011, 10:36
Аватар для crayday
Аспирант
Отправить личное сообщение для crayday Посмотреть профиль Найти все сообщения от crayday
 
Регистрация: 30.08.2011
Сообщений: 61

Ещё +1 аргумент в пользу того, чтобы делать всё на css - в случае css содержание (текст всплывающих подсказок) находится в html, которое там, скорее всего, формирует серверный скрипт, а простейшая логика попадает в css.
В случае же с представленным плагином, описание подсказок, скорее всего, попадёт в код javascript, что является плохой практикой, так как этот скрипт не получится вынести в отдельный файл и произойдёт ухудшение читаемости кода (и, возможно, увеличение веса страницы). В javascript желательно помещать только логику.
Ответить с цитированием
  #5 (permalink)  
Старый 02.09.2011, 10:40
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

crayday,
помещайте текст подсказок в HTML, кто ж мешает.
Ответить с цитированием
  #6 (permalink)  
Старый 02.09.2011, 10:48
Аватар для crayday
Аспирант
Отправить личное сообщение для crayday Посмотреть профиль Найти все сообщения от crayday
 
Регистрация: 30.08.2011
Сообщений: 61

Kolyaj,
Да, верно. Это, пожалуй, имеет смысл тогда, когда для подсказок предполагается анимация.
Ответить с цитированием
  #7 (permalink)  
Старый 02.09.2011, 20:34
Аватар для SouthTracer
Новичок на форуме
Отправить личное сообщение для SouthTracer Посмотреть профиль Найти все сообщения от SouthTracer
 
Регистрация: 01.09.2011
Сообщений: 2

точно, блин, забыл сказать, запускается плагин следующим образом:
$('.min_images a:(".active")').tooltip();


Сообщение от crayday Посмотреть сообщение
Ещё +1 аргумент в пользу того, чтобы делать всё на css - в случае css содержание (текст всплывающих подсказок) находится в html, которое там, скорее всего, формирует серверный скрипт, а простейшая логика попадает в css.
В случае же с представленным плагином, описание подсказок, скорее всего, попадёт в код javascript, что является плохой практикой, так как этот скрипт не получится вынести в отдельный файл и произойдёт ухудшение читаемости кода (и, возможно, увеличение веса страницы). В javascript желательно помещать только логику.
Это не скрипт, это плагин, а плагин располагается в отдельном файле. Так что я либо тебя не понял, либо ты не понял меня.

ЗЫ: Текст подсказок и так в html, он достается из title ссылки.

Последний раз редактировалось SouthTracer, 02.09.2011 в 21:07.
Ответить с цитированием
  #8 (permalink)  
Старый 18.11.2011, 04:39
Аватар для Андрей38
Профессор
Отправить личное сообщение для Андрей38 Посмотреть профиль Найти все сообщения от Андрей38
 
Регистрация: 11.12.2010
Сообщений: 261

Каким способом можна выудить ID дива по его offset().top?
Подскажите ,пожайлуста или дайте идеи
<div [B]id='N'[/B]> xxxx</div>
<script type="text/javascript">

var r= $('div').offset().top
var R= $('div')
if(r<12){
alert(R.attr('id'))	
	
		}
</script>

Мож ичем пройтись складывая в массив offset().top и ай ди каждого дива?
__________________
http://www.youtube.com/watch?feature...&v=cz0uN1ZNuM0
История не в теории ,а по факту

Последний раз редактировалось Андрей38, 18.11.2011 в 04:44.
Ответить с цитированием
  #9 (permalink)  
Старый 18.11.2011, 09:10
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

Андрей38, начинай уже делать нормальные примеры, не ленись...

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<!--
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
</script>
</head>
<body>
<div id='N'> xxxx</div>
<div id='M'> yyyy</div>
<div id='K'> zzzz</div>
<script type="text/javascript">
	$('div').each(function(){
		var top=$(this).offset().top;
		if (top<40) {
			alert(this.id)	
		};
	});
</script>
</body>
</html>
Ответить с цитированием
  #10 (permalink)  
Старый 18.11.2011, 16:15
Аватар для Андрей38
Профессор
Отправить личное сообщение для Андрей38 Посмотреть профиль Найти все сообщения от Андрей38
 
Регистрация: 11.12.2010
Сообщений: 261

КСА ! ОГРОМНЕЙШЕЕ СПАСИБО! А я то думал, в эррей все запихать и тягать по индексу и смотреть ,что вытянулось
http://www.youtube.com/watch?feature...&v=NIea9mUUR8U
Ну я не ленюсь ,как бы.. Я уже и растиражировал такой эффект по всей таблице.Но начало напрягаться и тормозить.В строке по 3 штуки одинаковых контентов с разными индексами по Зет.
Поэтому тулпит по офсету- наиболее актуально. спасибо , еще раз ,маэстро
...Классная связка- ич-зис ....
__________________
http://www.youtube.com/watch?feature...&v=cz0uN1ZNuM0
История не в теории ,а по факту

Последний раз редактировалось Андрей38, 18.11.2011 в 16:21.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с кодировкой в Jquery snizhok jQuery 3 27.06.2011 20:53
Ошибка в jQuery 1.5.1. Не понимаю в чем проблема? viatcheslav AJAX и COMET 0 16.05.2011 11:38
Проблема с вкладками на jquery tomclancys Общие вопросы Javascript 0 11.03.2010 08:44
Проблема при работе с плагином jQuery Map Hilight REp0rtER jQuery 3 29.07.2009 22:10
jquery tabs (проблема с отображением) Extern Элементы интерфейса 0 16.03.2009 17:42