jQuery .hover () и загрузка страницы

0

У меня есть следующие div:

<div id="foo">
...
    <div id="bar" class="container hidden">
    ...
    </div>
</div>

Я использую Twitter Bootstrap 3, и я добавил скрытый класс, чтобы автоматически скрыть второй div по умолчанию.

У меня есть следующий код:

$(document).ready(function() {
    $("#foo").hover(
        function() {
            $("#bar", this).toggleClass("hidden");
        }, function() {
            $("#bar", this).toggleClass("hidden");
    });
});

Кажется, что он работает корректно, но если мышь, если он уже навевает #foo div во время загрузки страницы, он по умолчанию применяет эффект зависания. После этого, если я перемещаю мышь вне div #foo, он снова применяет toggleClass и отображает внутренний #bar div.

Как предотвратить такое поведение при загрузке страницы?

  • 0
    Это в пределах $(document).ready() ?
  • 0
    да, ты можешь попробовать это?
Показать ещё 1 комментарий
Теги:
jquery-hover

3 ответа

3
Лучший ответ

Никто не упоминает об этом, но называет псевдо-событие accept in/out handler, поэтому вы можете переключать класс:

$("#foo").hover(function () {
    $("#bar").toggleClass("hidden");
});

И поскольку идентификаторы должны быть уникальными в контексте документа, не нужно передавать контекст, а только элемент цели с идентификатором.

  • 0
    Спасибо! Это то, что я искал.
4

Это правильный способ сделать это:

$("#foo").hover(
    function() {
        $("#bar", this).addClass("hidden");
    }, function() {
        $("#bar", this).removeClass("hidden");
});
  • 0
    Это правильный ответ, который вы ищете :) Удар меня тоже.
1

Вместо использования toggleClass() попробуйте использовать addClass() и removeClass():

$("#foo").hover(

    function() {

        $("#bar", this).addClass("hidden");
    }, function() {

        $("#bar", this).removeClass("hidden");
});

Этот способ позволяет вам более точно контролировать элементы.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню