2014-12-05 5 views
0

Сценарий: пользователь нажимает на элемент, а затем перетаскивает его. Перетаскивание заканчивается в другом месте. Я заметил, что когда это произойдет, если я прослушаю элемент, который перетаскивается, он ничего не вызовет, если курсор не будет выпущен на том же элементе при перетаскивании.Функция запуска jQuery, когда событие mousedown или touchhend происходит вне зоны выбора

Как я могу инициировать событие, которое начинается с элемента, но заканчивается в другом месте документа?

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

получить элементы в MouseDown и MouseUp, проверьте MouseUp находится вне MouseDown, вызвать запрос –

+0

о действительно? Я просто сделал это, но думал, что это плохой выбор ... :) Ну, похоже, я не нашел лучшего – unfulvio

ответ

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