【问题标题】:jQuery trigger function when mousedown or touchend event happen outside selector area当 mousedown 或 touchend 事件发生在选择器区域之外时的 jQuery 触发功能
【发布时间】:2021-07-14 01:08:51
【问题描述】:

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

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

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

【问题讨论】:

  • 获取mousedown和mouseup中的元素,检查mouseup是否在mousedown之外,触发请求
  • 哦,真的吗?我只是这样做了,但认为这是一个糟糕的选择...... :) 看来我没有找到更好的选择

标签: jquery jquery-events mousedown mouseup touchstart


【解决方案1】:

在回答 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');
        });
    });
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-30
    • 2013-09-07
    • 1970-01-01
    相关资源
    最近更新 更多