Вопрос:

Как переопределить ранее установленный обработчик событий jquery?

javascript jquery event-handling

12552 просмотра

3 ответа

106666 Репутация автора

В моем коде установлен обработчик события для элемента, который изменяет высоту CSS этого элемента до 100px. В другом месте я хочу, чтобы другой обработчик событий запускался при соблюдении определенных условий, который должен переопределить предыдущий обработчик событий и изменить его высоту на 200 пикселей.

Есть ли способ сделать это, или очистить все ранее установленные обработчики событий для элемента?

Автор: Click Upvote Источник Размещён: 28.12.2012 01:44

Ответы (3)


16 плюса

200173 Репутация автора

Решение

Да, просто используйте .off(), как

$('selector').off('eventname')
Автор: zerkms Размещён: 28.12.2012 01:46

3 плюса

476211 Репутация автора

Это что-то вроде взлома, но похоже, что вы пытаетесь взломать чужой код, не имея возможности изменить его напрямую, чтобы вы могли прибегнуть к этому.

Если вам просто нужно вызывать что-то после их, document.ready()и вы не контролируете порядок document.ready()операторов, то вы можете поместить некоторый код в короткий промежуток времени, как это, в ваш обработчик document.ready:

$(document).ready(function() {
    setTimeout(function() {
        $('selector').off('eventname').on(your event handler here);
    }, 1);
});

setTimeout()Будет работать после того как все document.ready () забежавших обработчики.

Автор: jfriend00 Размещён: 28.12.2012 01:58

1 плюс

11 Репутация автора

По-другому:

$(window).on('load', function() {
   $('selector').off('eventname').on(your event handler here);
});

Загрузка выполняется после того, как документ готов

Автор: Alain Размещён: 06.07.2018 09:26
Вопросы из категории :
32x32