Bạn cần theo dõi phần tử nào dragenter và dragleave đã được kích hoạt vào. Trình duyệt nghe và dragleave trên một phần tử riêng lẻ sẽ ghi lại không chỉ các sự kiện trên phần tử đó mà còn cả các sự kiện trên phần tử con.
$.fn.draghover = function(options) { return this.each(function() { var collection = $(), self = $(this); self.on('dragenter', function(ev) { if (collection.length === 0) { self.trigger('draghoverstart'); } collection = collection.add(ev.target); }); self.on('dragleave drop', function(ev) { collection = collection.not(ev.target); if (collection.length === 0) { self.trigger('draghoverend'); } }); }); };
Nghe các sự kiện -
$(window).draghover().on({ 'draghoverstart': function() { alert(‘dragged into the window'); }, 'draghoverend': function() { alert('dragged out of window'); } });