JQuery при наведении на запуск приложения с помощью мыши вне браузера - PullRequest
0 голосов
/ 17 мая 2011

У меня есть элемент в верхнем левом углу страницы, который показывает меню, когда вы наводите курсор на него. Если вы заходите на страницу с помощью мыши полностью за пределами браузера, появится меню. Как только вы входите в браузер, он исчезает.

Я предполагаю, что положение мыши по умолчанию равно (0, 0), если вы не запускаете внутри браузера, и, поскольку эта позиция находится над моим элементом, это вызывает наведение. Я подтвердил это, переместив элемент на один пиксель вправо или на один пиксель вниз, и оба вели себя, как и ожидалось, без первоначального наведения.

Есть ли "правильный" способ объяснить это?

ОБНОВЛЕНИЕ: Вот код jQuery:

        // Enable the user menu
        $("#user")
            .hover(
                function() {
                    $("span", "#user").css("color", "#195d43");
                    $("div", "#user").show();
                },
                function() {
                    $("span", "#user").css("color", "Silver");
                    $("div", "#user").hide();
                }
        );

и элемент:

<div id="user">
    Hello,
    <%=appUser.Name%>
    <span>►</span>
    <div>
        <a href="#">Change Password</a>
        <a href="#">Manage Security Questions</a>
    </div>
</div>

и CSS для элемента:

#user {
    position: absolute;
    top: 0px;
    padding: 2px;
    font-size: 12px;
    color: #195d43;
    background-color: #f1f1ee;
}

#user:hover {
    background-color: #e1dfd9;
}

#user span {
    color: Silver;
}

#user div {
    display: none;
    background-color: #f1f1ee;
    position: absolute;
    z-index: 999;
    border: solid 5px #e1dfd9;
}

ОБНОВЛЕНИЕ 2: Это происходит в Chrome. Это не происходит в IE7. Само приложение MVC 1.0, VS 2008.

1 Ответ

0 голосов
/ 17 мая 2011

Я думаю, что проблема у вас не в том, что ваш код наведения запускается, а в том, что вы изначально не скрываете меню в css

#user div{display:none;}

Кроме того, ваши селекторы чокнутые ...

Это ...

$("span", "#user")

должно быть

$("span, #user")

Вот рабочий образец

$("#user")
    .hover(
        function() {
            $("span, #user").css("color", "#195d43");
            $("#user div").show();
        },
        function() {
            $("span, #user").css("color", "#999");
            $("#user div").hide();
        }
);
...