2016-09-16 3 views
0

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

$('.column1, .column2, .column3, .column4, .column5').mouseenter(function() { 
    $(".p1").fadeIn(200); 
    $(this).animate({ 
     height: '100%' 
    }); 
}); 


$('.column1, .column2, .column3, .column4, .column5').mouseleave(function() { 
    $(".p1").fadeOut(200); 
    $(this).animate({ 
     height: '100px', 
    }); 
}); 

ответ

2

Используйте this ключевое слово, чтобы ссылаться на элемент, который вызвал событие, как это:

$('.column1, .column2, .column3, .column4, .column5').mouseenter(function() { 
    $(this).fadeIn(200).animate({ 
     height: '100%' 
    }); 
}); 

$('.column1, .column2, .column3, .column4, .column5').mouseleave(function() { 
    $(this).fadeOut(200).animate({ 
     height: '100px' 
    }); 
}); 

Также обратите внимание, что вы можете сократить код, используя общий класс по всем элементам, используя hover() обработчик и fadeToggle(). Попробуйте это:

$('.column').hover(function() { 
    $(this).fadeToggle(200).animate({ 
     height: $(this).height() == 100 ? '100%' : '100px' 
    }); 
}); 
+0

Это не работает для меня, я не хочу, чтобы весь элемент исчезать и выйдет, только текст внутри, так только элементы класса».p1" , но колонны должны быть видимым. – Sergi

+0

Пожалуйста, добавьте свой HTML-код на вопрос. Обратите внимание, что вы можете анимировать элементы, а не текстовые узлы, поэтому вам может понадобиться изменить свой HTML. –

+0

В основном, с моим исходным кодом, если у меня только 1 столбец, он отлично работает, я наводил курсор на столбец, он поднимается из-за анимации, и текст затухает и исчезает, но, конечно, он вызывает все. p1, и это то, что я хочу предотвратить. – Sergi

Смежные вопросы