Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 18.01.2013, 16:45
Аватар для ОлегА
Профессор
Отправить личное сообщение для ОлегА Посмотреть профиль Найти все сообщения от ОлегА
 
Регистрация: 25.08.2011
Сообщений: 420

а вот что бы срабатывал нужный article надо делать так
$(function(){

$('.magic-box img').hover(function(){
        header = $(this).closest('article').find('h2 a');
		$(this).animate({"background-color":"#000"}, 300),
		header.animate({"color":"#ddd"}, 300);
	}, function(){
        header = $(this).closest('article').find('h2 a');
		$(this).animate({"background-color":"#fff"}, 300),
		header.animate({"color":"#000"}, 300);
	})
	})
Ответить с цитированием
  #12 (permalink)  
Старый 18.01.2013, 17:04
Аватар для thegreatwhitedope
Интересующийся
Отправить личное сообщение для thegreatwhitedope Посмотреть профиль Найти все сообщения от thegreatwhitedope
 
Регистрация: 14.01.2013
Сообщений: 10

Но если в Вашем примере переместить переменную header перед hover, то эту переменную приходится опять объявлять в каждом mouseenter/leave...
Мне нужна универсальная переменная, чтобы вызывать её и в других hover().
Но
var header = $(this).find('article').find('h2 a');
выбирает сразу все заголовки, а не один конкретный.
Ответить с цитированием
  #13 (permalink)  
Старый 18.01.2013, 17:25
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

thegreatwhitedope,
Объявите переменную так
var header;

А присваивание производите первым действием по событию наведения
$('.magic-box img').hover(function(){
 header = $(this).find('article').find('h2 a')
Ответить с цитированием
  #14 (permalink)  
Старый 18.01.2013, 18:04
Аватар для thegreatwhitedope
Интересующийся
Отправить личное сообщение для thegreatwhitedope Посмотреть профиль Найти все сообщения от thegreatwhitedope
 
Регистрация: 14.01.2013
Сообщений: 10

Спасибо, ОлегА и Deff!
Теперь всё как надо.
Ответить с цитированием
  #15 (permalink)  
Старый 07.02.2013, 11:25
Аватар для thegreatwhitedope
Интересующийся
Отправить личное сообщение для thegreatwhitedope Посмотреть профиль Найти все сообщения от thegreatwhitedope
 
Регистрация: 14.01.2013
Сообщений: 10

Апну тему
Написал скриптик, но мне кажется что он очень громоздкий, нелогичный и вообще фекало-год
Подскажите, можно ли все это реализовать более изящно?
<article>
	<div class="magic-box">
		<a href="#"><img src="img/concert.jpg" alt="concert.jpg" /></a>
		<p><a href="#">competition</a></p>
  </div>
        <h2><a href="#">Win tickets to Rock en Seine with Frankphonik</a></h2>
	<h6>written by: <span>Mike Shaw</span> published on <span>August 02 2011</span></h6>
	<p>Radio stations and TV music channels are all well and good, but they tend to be a little bit insular. 
			      They will cover a little bit of new music, but 99% of the time it is from British or American artists  meanwhile the rest of 
			      the world is out there making...</p>
</article>

$(function(){
	var header,
		discription,
		img;
	
$('.magic-box img').hover(function(){
		header = $(this).closest('article').find('h2 a');
		discription = $(this).parents('.magic-box').children('p').children('a');
			$(this).stop().animate({"background-color":"#f26c00"}, 350),
			discription.stop().animate({"color":"#fff", "background-color":"#f26c00"}, 350),
			header.stop().animate({"color":"#f26c00"}, 350);
	}, function(){
		$(this).stop().animate({"background-color":"#fff"}, 350),
		discription.stop().animate({"color":"#fff", "background-color":"#000"}, 350),
		header.stop().animate({"color":"#000"}, 350);
	})
	$('article h2 a').hover(function(){
		discription = $(this).parents('article').find('.magic-box').find('p a');
		img = $(this).parents('article').find('.magic-box').find('img');
			$(this).stop().animate({"color":"#f26c00"}, 350),
			discription.stop().animate({"color":"#fff", "background-color":"#f26c00"}, 350),
			img.stop().animate({"background-color":"#f26c00"}, 350);
	}, function(){
			$(this).stop().animate({"color":"#000"}, 350),
			discription.stop().animate({"color":"#fff", "background-color":"#000"}, 350),
			img.stop().animate({"background-color":"#fff"}, 350);
	})
        })

Мне не нравится, например, что переменную discription приходиться объявлять по-новой и к тому же присваивать ей разные селекторы. Выходит, что если x-элемент запускает событие, а я хочу, чтобы это событие распространялось на y-элемент, то я указываю путь до y-элемента относительно x-элемента( при условии что у меня несолько пар таких x и y элементов), используя this. Сумбурно как-то получилось) Хотелось бы иметь одну переменную на все случаи. Возможно ли это реализовать? Понимаю, что это всё это по причине моего незнания и поэтому прошу помощи

Последний раз редактировалось thegreatwhitedope, 07.02.2013 в 11:55.
Ответить с цитированием
  #16 (permalink)  
Старый 07.02.2013, 12:39
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Можно вынести общую функцию

function SetAndAnime (Sel,color1,color2,color3,color4){
	        Sel.stop().animate({"background-color":color1}, 350),
	        discription.stop().animate({"color":color2, "background-color":color3}, 350),
	        header.stop().animate({"color":color4}, 350);
}

Последний раз редактировалось Deff, 07.02.2013 в 12:44.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы при установке модулей node.js tadjik1 AJAX и COMET 1 18.03.2012 02:20
Решение проблемы с отображением элементов на странице mozyr Javascript под браузер 17 13.01.2012 02:34
Проблемы с кодировкой в AJAX alxcube Общие вопросы Javascript 3 18.01.2011 12:09
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37
Drug&Drop + всплывание события = проблемы =(( _NoName_ Events/DOM/Window 4 05.03.2009 17:47