Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.01.2013, 00:09
Аватар для thegreatwhitedope
Интересующийся
Отправить личное сообщение для thegreatwhitedope Посмотреть профиль Найти все сообщения от thegreatwhitedope
 
Регистрация: 14.01.2013
Сообщений: 10

проблемы с hover'ом()
Приветствую всех!
Такая беда:
<div class="post">
     <div class="box">
         <a href="#"><img src="img/green.jpg" alt="green.jpg" /></a>
         <p><a href="#">Lorem ipsum/a></p>
     </div>
<h2><a href="#">Sed ut perspiciatis unde</a></h2>
</div>

Мне нужно, чтобы при наведении мыши на h2(который в div.post) изображение из div.box обрамлялось, к примеру, красной рамкой(это вообще не суть, предположим, что мне нужно изменить какое-либо из свойств изображения через animate). Я написал для этого код, но поскольку таких дивов с классом post у меня несколько, то при наведении на один заголовок, обрамляются все изображения.
Как в таком случае быть? Как определить один конкретный элемент?
Ответить с цитированием
  #2 (permalink)  
Старый 15.01.2013, 00:38
Профессор
Отправить личное сообщение для Hoshinokoe Посмотреть профиль Найти все сообщения от Hoshinokoe
 
Регистрация: 08.01.2012
Сообщений: 253

thegreatwhitedope,
Используй метод parents
$('h2').hover(function() {
    var img = $(this).parents('.post').find('img');
    img.css({...}); //делаешь что нужно
});
Ответить с цитированием
  #3 (permalink)  
Старый 15.01.2013, 09:51
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Метод parents используй только если тебе необходимо найти ближайшего родителя, если же структура иная, то лучше использовать closest().
Ответить с цитированием
  #4 (permalink)  
Старый 18.01.2013, 13:10
Аватар для thegreatwhitedope
Интересующийся
Отправить личное сообщение для thegreatwhitedope Посмотреть профиль Найти все сообщения от thegreatwhitedope
 
Регистрация: 14.01.2013
Сообщений: 10

Не буду засорять раздел и задам ещё один вопрос здесь:
<article>
					<div class="magic-box">
						<a href="#"><img src="img/green.jpg" alt="concert.jpg" /></a>
						<p><a href="#">competition</a></p>
					</div>
					<h2><a href="#">Win tickets to Rock en Seine with</a></h2>
					<h6><a href="#">written by: <span>Mike Shaw</span> published on <span>August 02 2011</span></a></h6>
					<p><a href="#">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 its from British or American artists – meanwhile the rest of 
					   the world is out there making...</a></p>
	</article>
	<article>
					<div class="magic-box">
						<a href="#"><img src="img/green.jpg" alt="concert.jpg" /></a>
						<p><a href="#">competition</a></p>
					</div>
					<h2><a href="#">Win tickets to Rock en Seine with</a></h2>
					<h6><a href="#">written by: <span>Mike Shaw</span> published on <span>August 02 2011</span></a></h6>
					<p><a href="#">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 its from British or American artists – meanwhile the rest of 
					   the world is out there making...</a></p>
	</article>
	<article>
					<div class="magic-box">
						<a href="#"><img src="img/green.jpg" alt="concert.jpg" /></a>
						<p><a href="#">competition</a></p>
					</div>
					<h2><a href="#">Win tickets to Rock en Seine with</a></h2>
					<h6><a href="#">written by: <span>Mike Shaw</span> published on <span>August 02 2011</span></a></h6>
					<p><a href="#">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 its from British or American artists – meanwhile the rest of 
					   the world is out there making...</a></p>
	</article>

Мне нужно, чтобы при наведении на Img подсвечивался h2( а в последующем при наведении на h2 подсвечивался img, при наведении на p подсвечивались и h2 и img). Пишу:
$(function(){
	var img = $(this).('.magic-box').find('img');
	var header = $(this).('article').find('h2 a');
	
	$('.magic-box').hover(function(){
		$(this).animate({"background-color":"#000"}, 300),
		header.animate({"color":"#ddd"}, 300);
	}, function(){
		$(this).animate({"background-color":"#fff"}, 300),
		header.animate({"color":"#000"}, 300);
	})
	})

Однако ничего не анимируется. Что не так? кривые селекторы? Мои руки?
Ответить с цитированием
  #5 (permalink)  
Старый 18.01.2013, 13:18
Аватар для ОлегА
Профессор
Отправить личное сообщение для ОлегА Посмотреть профиль Найти все сообщения от ОлегА
 
Регистрация: 25.08.2011
Сообщений: 420

$(this).('.magic-box').find('img');
- странная запись, так низя вы че, вот

$(function(){
    var img = $(this).find('.magic-box').find('img');
    var header = $(this).find('article').find('h2 a');
    $('.magic-box').hover(function(){
        $(this).animate({"background-color":"#000"}, 300),
        header.animate({"color":"#ddd"}, 300);
    }, function(){
        $(this).animate({"background-color":"#fff"}, 300),
        header.animate({"color":"#000"}, 300);
    })
})

Последний раз редактировалось ОлегА, 18.01.2013 в 13:21.
Ответить с цитированием
  #6 (permalink)  
Старый 18.01.2013, 14:10
Аватар для thegreatwhitedope
Интересующийся
Отправить личное сообщение для thegreatwhitedope Посмотреть профиль Найти все сообщения от thegreatwhitedope
 
Регистрация: 14.01.2013
Сообщений: 10

Спасибо! Во внимательности мне не занимать.
Только вот теперь переменные img и header не работают в hover'e. Приходится прописывать их в каждой фунции hover'a (mouseenter/mouseleave). Как сделать их доступными вне hover'a? Ведь они же итак уже глобальные, или нет?
Ответить с цитированием
  #7 (permalink)  
Старый 18.01.2013, 15:06
Аватар для ОлегА
Профессор
Отправить личное сообщение для ОлегА Посмотреть профиль Найти все сообщения от ОлегА
 
Регистрация: 25.08.2011
Сообщений: 420

thegreatwhitedope, а вы уверены, что дело именно header, потому что он должен там определятся, я протестировал этот код у себя, у меня не срабатывал animate, с такими параметрами как у вас, я пробовал вот так, отрабатывает:

$('.magic-box').hover(function(){
            $(this).animate({"font-size":"20pt"}, 300);
            header.animate({"font-size":"1pt"}, 300);
        }, function(){
            $(this).animate({"font-size":"10pt"}, 300),
            header.animate({"font-size":"10pt"}, 300);
        });
Ответить с цитированием
  #8 (permalink)  
Старый 18.01.2013, 15:59
Аватар для thegreatwhitedope
Интересующийся
Отправить личное сообщение для thegreatwhitedope Посмотреть профиль Найти все сообщения от thegreatwhitedope
 
Регистрация: 14.01.2013
Сообщений: 10

Да, уверен. Возможно, что у Вас не срабатывал animate, потому что для работы animate с цветом должен быть подключен плагин "Color animation".
$(function(){
	var header = $(this).parents('article').find('h2 a');

$('.magic-box img').hover(function(){
		$(this).animate({"background-color":"#000"}, 300),
		header.animate({"color":"#ddd"}, 300);
	}, function(){
		$(this).animate({"background-color":"#fff"}, 300),
		header.animate({"color":"#000"}, 300);
	})
	})

Такой код у меня не срабатывает. Но если инициализировать переменную в каждом ховерском mouseenter/mouseleave, то код работает. Как же, всё-таки, сделать эту переменную доступной для всех?
Ответить с цитированием
  #9 (permalink)  
Старый 18.01.2013, 16:13
Аватар для ОлегА
Профессор
Отправить личное сообщение для ОлегА Посмотреть профиль Найти все сообщения от ОлегА
 
Регистрация: 25.08.2011
Сообщений: 420

thegreatwhitedope, а header у вас точно ни где не переопределяется?ну попробуйте сделать
var header = 1;
и вызвать alert(header ) в hover если покажет там 1, значит все должно работать и кстате как у $(this).parents('article') могут быть родитель article?вы же его в тело документа вписываете, проверте сначала лучше alert(header.length) есть ли такой объект вообще
Ответить с цитированием
  #10 (permalink)  
Старый 18.01.2013, 16:26
Аватар для thegreatwhitedope
Интересующийся
Отправить личное сообщение для thegreatwhitedope Посмотреть профиль Найти все сообщения от thegreatwhitedope
 
Регистрация: 14.01.2013
Сообщений: 10

Я почему-то подумал, что parents() позвращает article как родительский элемент ^^'' Фигню сделал.
исправил вот так:
var header = $(this).find('article').find('h2 a');

и теперь все хорошо, header изменяется везде(все заголовки изменяются, хотя изменяться должен только один) и сразу Как исправить? :/ Наверное, нужен parents(), только вот где его ипользовать? Не совсем понял, как он работает.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы при установке модулей 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