2013-12-16 3 views
0

UPDATE:накладываемого interrups парения события

Был предложено включить мой HTML, обратите внимание, что это использование рулей для моего NodeJS кода:

<div id='grid'> 
    {{#each projects}} 
     <img src='{{image_path}}' id='image-{{id}}' class='gridImage'> 
     <div id='overlay-image-{{id}}' class='overlay'> 
      <div class='detail'> 
       <span style='font-size: 18px; font-family:OpenSans-Bold'>{{name}}</span> 
       <br><br> 
       {{shortDescription}} 
       <br><br> 
       Made by {{developers}} 
      </div> 
     </div> 
    {{/each}} 
</div> 

У меня есть сетка изображений, когда вы наводите курсор на каждое изображение, он расскажет вам что-то об изображении, используя оверлей div. Like this.

Теперь, вот код JQuery, чтобы сделать это:

$('.gridImage').mouseover(function() { 
    $('#overlay-'+$(this).attr('id')).css({ 
     'top': $(this).position().top, 
     'left': $(this).position().left, 
     'right': $(this).position().left, 
     'bottom': $(this).position().bottom, 
     'width': $(this).width(), 
     'height': $(this).height() 
    }).fadeIn(150); 
}); 
$('.gridImage').mouseout(function() { 
    $('#overlay-'+$(this).attr('id')).fadeOut(150); 
}); 

По существу, этот код определяет, при наведении курсора мыши на изображение, он находит право (дела) наложение на основе которого изображение это (идентификатор), и удаляет его поверх изображения. Теперь, поскольку div полностью закрывает изображение, вызывается mouseout и вызывается постепенное исчезновение наложения.

Довольно просто, это делает его таким образом я кладу курсор на изображение, оно исчезает в накладке, а затем исчезает его - в основном это мерцает

Как я могу это исправить?

ответ

1

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

+0

Да - позвольте мне попробовать. Как использовать CSS? Поскольку существует много наложений с разными идентификаторами, и мне нужен правильный. – MCKapur

+0

Это будет работать, только если вы уверены, что мышь будет накладываться при наложении. Если мышь может начать работу над вашим исходным элементом, но вне наложения, то это не будет работать для всех позиций мыши. – jfriend00

0

Попробуйте изменить mouseover/mouseout к mouseenter/mouseleave.

Редактировать

Здесь jsfiddle я использовал:

http://jsfiddle.net/ax9X5/2/

Редактировать 2

Поскольку .overlay не является дочерним элементом .gridImage, указанный выше раствор требует, чтобы оба они были помещены как дочерние элементы в контейнер и перемещали идентификатор и центр мыши в t контейнер для шляп.

Удачи!

+1

Как это решить проблему в любом случае? – jfriend00

+0

Возможно, я не понял этот вопрос, но для него все это имеет значение http://jsfiddle.net/ax9X5/2/. Извините, если я ошибаюсь. –

+0

Я был бы очень признателен, если бы кто-нибудь объяснил, почему это не работает. Насколько я вижу, он делает все, что должен. –

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