Guest User

Untitled

a guest
Jul 18th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.07 KB | None | 0 0
  1. (function($) {
  2. $.fn.hasEvent = function(type) {
  3. //get list of events on object
  4. var elements = $(this), selector, evts, evt;
  5.  
  6. /*first, check for events set using $().bind('event') or $().<event>()*/
  7. for (var x = 0; x < elements.length; x++) {
  8. evts = $(elements).eq(x).data("events");
  9. evt = evts && evts[type] || []; //get the events of the given type
  10.  
  11. for (var y = 0; y < evt.length; y++) {
  12. //if no selector exists then event is normal, not a live/delegate event
  13. if (!evt[y].selector) return true;
  14. }
  15.  
  16.  
  17. }
  18.  
  19. /*if not found on the element check for .live() events which are attached to $(document)*/
  20. var events = jQuery.data(document, "events"), //get all events
  21. live = events && events.live || [], //get .live events or empty array
  22. selectors = [];
  23.  
  24. //loop thru live object, collect selectors from objects where origType matches incoming type
  25. for (var z = 0; z < live.length; z++) {
  26. if ((live[z].origType === type)) {
  27. selectors.push(live[z].selector);
  28. }
  29. }
  30. //check if elements match the selectors from the event handlers
  31. //example $('#foo, #bar').is('.baz, .moo')
  32.  
  33. if (elements.is(selectors.join(','))) return true;
  34.  
  35. /*if still not found then check for .delegate() events
  36. loop thru elements and walk heirarchy checking each parent for events*/
  37.  
  38. var pars;
  39. live = []; //reset
  40. selector = [];//reset
  41. for (var i = 0; i < elements.length; i++) {
  42. pars = $($(elements).eq(i)).parents(); //list of parent elements including self
  43.  
  44. for (var j = 0; j < pars.length; j++) {
  45. events = $(pars[j]).data("events");
  46. live = events && events.live || []; //any live events on parent?
  47.  
  48. for (var k = 0; k < live.length; k++) {
  49. //if parent has a live event with a type that matches our type then grap the selector
  50. if ((live[k].origType === type)) {
  51. selectors.push(live[k].selector);
  52. }
  53. }
  54. //var xxx = $(pars[j]).find(selectors.join(','));
  55. //if (elements.filter(xxx).length) return true;
  56. //console.log(elements, selectors)
  57. if (elements.is(selectors.join(','), pars[j])) return true;
  58. }
  59. }
  60. return false;
  61. }
  62. })(jQuery);
Add Comment
Please, Sign In to add comment