Предотвратить одно событие jQuery с другим - PullRequest
5 голосов
/ 09 июня 2011

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

Если пользователь нажимает кнопку «Отмена» в окне подтверждения, любые последующие события должны быть отменены, но это не должно быть постоянным, например, повторное инициирование события должно вызвать подтверждение и начать заново. Если мне удастся решить эту проблему, я могу сделать любое деликатное действие с вопросом о подтверждении, чтобы убедиться, что пользователь хотел нажать.

Например:

$('.confirm').click(function() {
    if(!confirm('Are you sure?')) {
        // Stop any other click events on $(this) from happening this instance.
    }
});

$('.clicker').click(function() {
    alert('it happened');
});

<a class="clicker confirm">Click me</a>

Желательным выводом будет то, что отмена подтверждения отменит событие щелчка, но не отключит его полностью.

Ответы [ 2 ]

5 голосов
/ 09 июня 2011

Вы можете использовать event.stopImmediatePropagation() из jQuery:

$('.confirm').click(function(event) {
    if(!confirm('Are you sure?')) {
        event.stopImmediatePropagation();

        // Stop any other click events on $(this) from happening this instance.
    }
});

$('.clicker').click(function() {
    alert('it happened');
});

Посмотрите на контрольный пример на jsFiddle

0 голосов
/ 09 июня 2011
$('.confirm').click(function() {     
return confirm('Are you sure?');
});

вы также можете использовать event.stopPropagation() в стороне от события щелчка, чтобы остановить дальнейшее распространение.

...