.hover () с jQuery работает только один раз

0

Я не могу отключить мой контент, я пытаюсь включить его с помощью .hover(), но проблема в том, что .hover() работает только при первом зависании не каждый раз; класс содержимого содержимого .dboxcontent:

$('div.conbox').hover(function () {
    var activeID = $(this).attr('id');
    $('#' + activeID + ' .dboxcontent').show();
}, function () {
    var activeID = $(this).attr('id');
    $('#' + activeID + ' .dboxcontent').remove();
});

Пример jsfiddle

Теги:

3 ответа

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

Используйте .hide() вместо .remove(),
в противном случае вы .dboxcontent элемент DOM с классом .dboxcontent внутри этого .dboxcontent элемента.

Как это:

$('div.conbox').hover(function () {
    $(this).find('.dboxcontent').show();
}, function () {
    $(this).find('.dboxcontent').hide();
});

скрипка

На самом деле вам не нужен jQuery для этого, просто CSS является лучшим решением здесь.

.conbox:hover .dboxcontent {
    display: block;
}

Просто CSS здесь

1

Когда вы делаете.remove(), вы фактически удаляете HTML-элемент из DOM.

Вместо этого вы должны скрыть это.

Я бы переписал ваши js таким образом:

                 $('div.conbox').hover(
                     function() {
                         $(this).find('.dboxcontent').show();
                     }, function() {
                         $(this).find('.dboxcontent').hide();
                     }
                 );

Вам не нужна конкатенация строк. Вместо этого вы можете использовать.find().

http://jsfiddle.net/qVuhh/9/

  • 0
    Теперь узнали разницу между ".hide ()" и ".remove ()", большое спасибо
1

Вам нужен .hide(): http://jsfiddle.net/qVuhh/10/

Если вы используете метод remove(), тег будет удален.

Ещё вопросы

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