У меня есть следующие 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.
Как предотвратить такое поведение при загрузке страницы?
Никто не упоминает об этом, но называет псевдо-событие accept in/out handler, поэтому вы можете переключать класс:
$("#foo").hover(function () {
$("#bar").toggleClass("hidden");
});
И поскольку идентификаторы должны быть уникальными в контексте документа, не нужно передавать контекст, а только элемент цели с идентификатором.
Это правильный способ сделать это:
$("#foo").hover(
function() {
$("#bar", this).addClass("hidden");
}, function() {
$("#bar", this).removeClass("hidden");
});
Вместо использования toggleClass()
попробуйте использовать addClass()
и removeClass()
:
$("#foo").hover(
function() {
$("#bar", this).addClass("hidden");
}, function() {
$("#bar", this).removeClass("hidden");
});
Этот способ позволяет вам более точно контролировать элементы.
$(document).ready()
?