Это может быть легко выполнено без использования JavaScript:
.dummy {
height: 100%;
width: 100%;
position: absolute;
top:0;
background: #000;
opacity: 0.50;
display: none;
}
.figure-item:hover .dummy{
display: block;
}
Я только что изменил .overlay2
к .dummy
в таблице стилей и добавил display: none;
, а затем сделал это так парит над .figure-item
множеств .dummy
к display: block;
.
Здесь работает: http://jsfiddle.net/zaX5U/6/
Старый JS Решение:
Это должно работать для вас:
$(document).ready(function() {
$('.figure-img').on('mouseenter mouseleave', function(e){
var $this = $(this),
toggle = e.type === 'mouseenter';
$('.dummy').removeClass('overlay2');
$this.find('.dummy').toggleClass('overlay2', toggle);
});
});
причину, по которой предыдущий код не работал был потому что похоже, что вы забыли включить строку с обработчиком событий (был непревзойденный }):
в скрипке). Это означало, что $(this)
был фактически document
, поэтому код не работал.
.hover()
interally maps to .on("mouseenter mouseleave"
, и в этом случае код становится меньше, чтобы использовать полную версию. Это также использует функцию .toggleClass()
с необязательным аргументом switch
для удаления или добавления класса в зависимости от типа события.
Fiddle: http://jsfiddle.net/zaX5U/4/
'$ (это)' 'является document' в коде –
у вас есть дополнительный набор закрывающих скобок ('}); '), но может быть просто вопрос опечатка, а не ошибка в вашем коде. – martincarlin87