当mousedown或touchend事件发生在选择器区域外时,jQuery触发器函数

时间:2014-12-05 05:49:40

标签: jquery javascript-events mousedown mouseup touchstart

场景:用户点击一个元素,然后拖动它。拖动虽然在其他地方结束。我注意到,当发生这种情况时,如果我听到被拖动的元素,除非在拖动完成时光标在同一元素上释放,否则它不会触发任何内容。

如何触发在元素上开始但在文档的任何其他位置结束的事件?

$('#hotels-slider-handle').on('mouseup touchend click', function() {
    $('#booking-input').trigger('change');
});

1 个答案:

答案 0 :(得分:0)

在回答Cerlin Boss的回答中,他对我上面的原帖发表评论......这就是我提出的并且运作良好(我需要触发的内容被触发得很好) - 我正在寻找更有效的解决方案(忽略jQuery延迟,它们在我的范围内是必要的)

var bookingFormInputs = $('#booking-input'),
    hotelsSlider = $('#hotels-slider');
$('#hotels-slider-handle').on('mousedown touchstart', function() {
    $(document).delay(300).one('mouseup touchend', function() {
        $(bookingFormInputs).delay(600).trigger('change');
    });
    $(hotelsSlider).delay(300).one('mouseleave', function() {
        $(document).on('mouseup touchend', function() {
            $(bookingFormInputs).delay(300).trigger('change');
        });
    });
});