Greasy Fork is available in English.

jquery.bind-first

jquery bind-first plugin

بۇ قوليازمىنى بىۋاسىتە قاچىلاشقا بولمايدۇ. بۇ باشقا قوليازمىلارنىڭ ئىشلىتىشى ئۈچۈن تەمىنلەنگەن ئامبار بولۇپ، ئىشلىتىش ئۈچۈن مېتا كۆرسەتمىسىگە قىستۇرىدىغان كود: // @require https://update.greatest.deepsurf.us/scripts/2857/26080/jquerybind-first.js

  1. // ==UserScript==
  2. // @name jquery.bind-first
  3. // @namespace private-face
  4. // @description jquery bind-first plugin
  5. // @source https://github.com/private-face/jquery.bind-first
  6. // @copyright Vladimir Zhuravlev
  7. // @version 0.2.3
  8. // @license MIT
  9. // ==/UserScript==
  10.  
  11.  
  12. /*
  13. * jQuery.bind-first library v0.2.3
  14. * Copyright (c) 2013 Vladimir Zhuravlev
  15. *
  16. * Released under MIT License
  17. * @license
  18. *
  19. * Date: Thu Feb 6 10:13:59 ICT 2014
  20. **/
  21. function loadjQueryBindFirst() {
  22.  
  23. (function($) {
  24. var splitVersion = $.fn.jquery.split(".");
  25. var major = parseInt(splitVersion[0]);
  26. var minor = parseInt(splitVersion[1]);
  27.  
  28. var JQ_LT_17 = (major < 1) || (major == 1 && minor < 7);
  29. function eventsData($el) {
  30. return JQ_LT_17 ? $el.data('events') : $._data($el[0]).events;
  31. }
  32. function moveHandlerToTop($el, eventName, isDelegated) {
  33. var data = eventsData($el);
  34. var events = data[eventName];
  35.  
  36. if (!JQ_LT_17) {
  37. var handler = isDelegated ? events.splice(events.delegateCount - 1, 1)[0] : events.pop();
  38. events.splice(isDelegated ? 0 : (events.delegateCount || 0), 0, handler);
  39.  
  40. return;
  41. }
  42.  
  43. if (isDelegated) {
  44. data.live.unshift(data.live.pop());
  45. } else {
  46. events.unshift(events.pop());
  47. }
  48. }
  49. function moveEventHandlers($elems, eventsString, isDelegate) {
  50. var events = eventsString.split(/\s+/);
  51. $elems.each(function() {
  52. for (var i = 0; i < events.length; ++i) {
  53. var pureEventName = $.trim(events[i]).match(/[^\.]+/i)[0];
  54. moveHandlerToTop($(this), pureEventName, isDelegate);
  55. }
  56. });
  57. }
  58. function makeMethod(methodName) {
  59. $.fn[methodName + 'First'] = function() {
  60. var args = $.makeArray(arguments);
  61. var eventsString = args.shift();
  62.  
  63. if (eventsString) {
  64. $.fn[methodName].apply(this, arguments);
  65. moveEventHandlers(this, eventsString);
  66. }
  67.  
  68. return this;
  69. }
  70. }
  71.  
  72. // bind
  73. makeMethod('bind');
  74.  
  75. // one
  76. makeMethod('one');
  77.  
  78. // delegate
  79. $.fn.delegateFirst = function() {
  80. var args = $.makeArray(arguments);
  81. var eventsString = args[1];
  82. if (eventsString) {
  83. args.splice(0, 2);
  84. $.fn.delegate.apply(this, arguments);
  85. moveEventHandlers(this, eventsString, true);
  86. }
  87.  
  88. return this;
  89. };
  90.  
  91. // live
  92. $.fn.liveFirst = function() {
  93. var args = $.makeArray(arguments);
  94.  
  95. // live = delegate to the document
  96. args.unshift(this.selector);
  97. $.fn.delegateFirst.apply($(document), args);
  98.  
  99. return this;
  100. };
  101. // on (jquery >= 1.7)
  102. if (!JQ_LT_17) {
  103. $.fn.onFirst = function(types, selector) {
  104. var $el = $(this);
  105. var isDelegated = typeof selector === 'string';
  106.  
  107. $.fn.on.apply($el, arguments);
  108.  
  109. // events map
  110. if (typeof types === 'object') {
  111. for (type in types)
  112. if (types.hasOwnProperty(type)) {
  113. moveEventHandlers($el, type, isDelegated);
  114. }
  115. } else if (typeof types === 'string') {
  116. moveEventHandlers($el, types, isDelegated);
  117. }
  118.  
  119. return $el;
  120. };
  121. }
  122.  
  123. })(jQuery);
  124.  
  125. }
  126. if (window.document.readyState === 'complete') {
  127. loadjQueryBindFirst();
  128. } else {
  129. window.addEventListener('load',loadjQueryBindFirst, false);
  130. }