2013-04-10 2 views
0

Please see this fiddleПользовательские события мыши по ссылкам

Если вы наведите курсор мыши точно по ссылке, появляется другая ссылка. Но другой текст также появляется, когда вы наводите курсор слева или справа от ссылки. Я хочу сделать эффект зависания только тогда, когда он зависает по точной ссылке.

Как я могу это сделать?

HTML Мой код:

<ul id="nav"> 
    <li id="a1"><a href="#">original link 1</a></li> 
    <li id="a2" class="hack"><a href="#">hover link 1</a></li> 
    <li id="b1"><a href="#">original link 2</a></li> 
    <li id="b2" class="hack"><a href="#">hover link 2</a></li> 
    <li id="c1"><a href="#">original link 3</a></li> 
    <li id="c2" class="hack"><a href="#">hover link 3</a></li> 
</ul> 

Мой Javascript код:

$('.hack').hide(); 
$("#nav li").mouseenter(function() { 
    $('#' +this.id.charAt(0)+"2").show(); 
    $('#' +this.id.charAt(0)+"1").hide(); 
    }).mouseleave(function() { 
    $('#' +this.id.charAt(0)+"1").show(); 
    $('#' +this.id.charAt(0)+"2").hide(); 
    }); 

Пожалуйста, смотрите скрипку, чтобы увидеть эффект, я имею в виду.

ответ

0

Попробуйте следующее:

$('.hack').hide(); 
$("#nav li a").mouseenter(function() { 
    $('#' +this.parentNode.id.charAt(0)+"2").show(); 
    $('#' +this.parentNode.id.charAt(0)+"1").hide(); 
    }).mouseleave(function() { 
    $('#' +this.parentNode.id.charAt(0)+"1").show(); 
    $('#' +this.parentNode.id.charAt(0)+"2").hide(); 
}); 

Вы хотите чтобы инициировать события hover на тегах a, а не на li.

EXAMPLE

1

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

$("#nav li").on({ 
    "mouseenter" : function() { }, 
    "mouseleave" : function() { } 
}, "a"); 
0

Я думаю, я обновил скрипку. Я просто добавил этот стиль:

#nav li { 
    display: inline-block; 
} 
0

В ваших JS, связать вашу функцию "#nav li a" вместо.

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