jQuery отменить привязку при наведении, повторно включить при наведении

0

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

$('.lowerFrontStripRow img').hover(         

function(){
     $('.orbit-caption-bottom#bottomThumb'+$(this).data("thumbid")).slideDown();
     $('.lowerFrontStripRow img').unbind();
},

function(){
     $('.lowerFrontStripRow img').bind(hover);
     $('.orbit-caption-bottom').slideUp();

}

);

Как я могу отключить действие до отключения мыши?

Благодаря,

Алан.

  • 0
    unbind() что?
  • 0
    Должен быть лучший способ сделать то, что вы ожидаете. Вы должны предоставить более релевантный код в виде HTML-разметки и, возможно, jsfiddle
Теги:
hover

3 ответа

0

То, что вы, похоже, хотите сделать, это:

Отобразить, если:

  • Пользователь наводится на элемент

Отключить, если выполнено одно из следующих условий:

  • Пользователь больше не нависает над элементом
  • Х количество времени после того, как пользователь начал зависать над элементом.

Прежде всего, hover(...) является сокращением для .on( 'mouseover' ) и .on( 'mouseout' ); Он фактически связывает эти два события, и вы должны развязать эти два события. У вас также возникают проблемы с вызовом функции mouseover несколько раз? Почему бы не сохранить некоторую информацию о элементе, чтобы предотвратить это?

$('.lowerFrontStripRow img').on( 'mouseover', function() {
    if( $(this).data( 'displaying' ) != 1 ) {
        $(this).data( 'displaying', 1 );
        $('.orbit-caption-bottom'+$(this).data("thumbid")).slideDown();
        setTimeout( function() { $('.orbit-caption-bottom').slideUp(); }, 3000 );
    }
} ).on( 'mouseout', function() {
    $(this).data( 'displaying', 0 );
    $('.orbit-caption-bottom'+$(this).data("thumbid")).slideUp();
} );
0

Первым параметром .unbind() является eventType так:

$('.lowerFrontStripRow img').unbind('hover');

будет правильным синтаксисом для открепления ваших функций.

Btw, вероятно, вы должны изменить весь подход к проблеме.

0

Только это должно работать

$('.lowerFrontStripRow img').hover(         

function(){
     $('.orbit-caption-bottom#bottomThumb'+$(this).data("thumbid")).slideDown();

},

function(){

     $('.orbit-caption-bottom').slideUp();

}

);

Ещё вопросы

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