2012-06-21 3 views
1

Это HTML у меня есть:JQuery Mouseover не работает по назначению

<div id="social"> 
    <a href="#" class="twitter"><span class="text">Twitter</span></a> 
</div> 

То, что я собираюсь сделать, это изначально скрыть span.text и когда я наведите курсор мыши на изображение в фоне дел. Это мой CSS

#social a { 
    display:inline-block; 
    overflow:hidden; 
    padding:4px 0 0 28px; 
/* left padding is for the bg image to be visible*/ 
} 
#social a span { 
    display:none; 
} 
#social .twitter { 
    background:url(../images/social/twitter.png) no-repeat left top; 
} 
#social .twitter:hover { 
    background:url(../images/social/twitter_hover.png) no-repeat left top; 
} 

И это мой ЯШ:

$("#social a.twitter").mouseover(function(){ 
    $("span",this).show("slow"); 
}).mouseout(function(){ 
    $("span",this).hide("slow"); 
}); 

Но что происходит, когда я наведите курсор мыши на изображение, он держит на показ и скрытие текста .. Где я буду неправильно?

+0

Используйте .hover вместо события .mouseover. Проверьте эту ссылку http://stackoverflow.com/questions/1116361/jquery-hover-mouse-out –

+0

@BishnuPaudel Ничего плохого в использовании 'mouseover' и' mouseout' здесь. – iambriansreed

ответ

2

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

исправить это использование MouseEnter и MouseLeave события

$("#social a.twitter").mouseenter(function(){ 
    $("span",this).show("slow"); 
}).mouseleave(function(){ 
    $("span",this).hide("slow"); 
});​ 

fiddle for you :D

и, в CSS комментарии являются с /* */ и не с //

+0

Awseome! Работает по назначению ... Еще один урок выучил :) Спасибо – Codename

+0

добро пожаловать. это была пара головных болей, пока я ее не нашел. id предлагает вам прочитать документацию по mouseenter и mouseleave. – Jarry

+0

Еще один вопрос ... Решение работает нормально, но когда я наводил изображение, текст появляется мгновенно. Функция hide переместит текст в нижний угол, но не в функцию мыши. Как я могу заставить функцию mouseenter также перемещаться по тексту? – Codename

1

В вашем CSS:

// left padding is for the bg image to be visible 

// не является допустимым символом для комментариев.

Они должны быть обернуты в /* */ как:

/* left padding is for the bg image to be visible */ 
+0

Да, извините. Я добавил этот комментарий только для этого сообщения. – Codename

0

Вам не нужно (и не должен 't) использовать javascript для этого эффекта. Вы можете сделать это с помощью CSS, который является более чистым и более смысловым :). Пример:

​a.twitter { 
    display: block; 
    width: 300px; 
    height: 300px; 
    background: url('http://www.simplyzesty.com/wp-content/uploads/2012/01/twitter_newbird_boxed_whiteonblue2.png'); 
} 

a.twitter span { 
    opacity: 0; 
    -webkit-transition: opacity 0.2s; 
    -moz-transition: opacity 0.2s; 
    -o-transition: opacity 0.2s; 
    transition: opacity 0.2s; 
} 

a.twitter:hover span { 
    opacity: 1; 
} 

jsFiddle: http://jsfiddle.net/Ut4Gx/

+0

Мне жаль, что я не ясно объяснил себя. Изначально будет отображаться только значок твиттера, и когда вы наводите курсор, я хочу, чтобы текст скользил, т. Е. Значок должен перемещаться влево, разворачивая текст. – Codename

0

Попробуйте использовать mouseleave. Re mouseout:

Этот тип события может вызвать много головных болей из-за пузырьков событий. Для экземпляра , когда указатель мыши перемещается из внутреннего элемента в , этот пример будет отправлен на это событие мыши, затем просочится вверх в Outer. Это может вызвать связанный обработчик mouseout в нерабочее время раз. См. Обсуждение для .mouseleave() для полезной альтернативы.

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