2013-02-26 2 views
3

У меня есть следующий HTMLJQuery Mouseover/MouseOut мерцает

<div class="individual"> 
    <div class="change">change</div> 
    <div class="picture"><img src....></div> 
</div> 

.change имеет position: absolute; и невидим. На mouseover .picture, я хочу, чтобы .change появлялся, и на mouseout, чтобы исчезнуть. Если человек нажимает .change, тогда что-то должно произойти.

Прямо сейчас, когда мышь переходит на смену, тогда она воспринимается как изображение мыши, и поэтому изменение начинает мерцать!

Я тогда сделал это JQuery:

$('.change').mouseout(function(){ 
    $('.picture').mouseout(function(){ 
     $(this).parent().children('.change').hide(); 
    }); 
}); 

$('.picture').mouseover(function(){ 
    var i = $(this).parent().children('.change').show(); 
}); 

Это отлично работает только в первый раз! Если я выйду из картины, тогда, когда я вернусь, и продолжаю менять, все начинает мерцать! Что я делаю?!

Благодаря

+0

На дисплее мыши, когда отображается «изменение», отображается ли оно над изображением? – luckystars

ответ

11

Используйте «MouseEnter» вместо «наведения курсора» и «MouseLeave» вместо «отведения указателя мыши»

$('.picture').mouseenter(function(){ 
    $(this).parent().children('.change').hide(); 
}); 



$('.picture').mouseleave(function(){ 
    var i = $(this).parent().children('.change').show(); 
}); 
+1

"они перемещаются по DOM с каждым событием mouseover/mouseout, чтобы узнать, действительно ли пользователь« ввел »или« оставил »данный элемент». – Johnston

+0

отлично! Отлично работает :) – frabiacca

1

Проблема заключается в том, что скрывается .change переместит .picture элемента к месту, где .change раньше был. Это вызовет как .mouseover(), так и .mouseenter(), поэтому нет смысла заменять.

Вы должны изменить позиционирование CSS на абсолютно для обоих элементов, так удаление .change не будет двигаться .picture

3

Я всегда находил MouseOut и наведении курсора мыши довольно багги. Не знаю, почему, вы можете попробовать:

$(function() { 
    $('.picture').hover(function() { 
     $('.change').show(); 
    },function() { $('.change').hide(); }); 
}); 

До тех пор, как появление «.Кнопка» не двигается «.picture», в результате чего парение будет нарушено, то это должно работать для вас.

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