loco-rails 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (164) hide show
  1. checksums.yaml +4 -4
  2. data/lib/generators/loco/js_assets_structure/js_assets_structure_generator.rb +1 -1
  3. data/lib/loco/version.rb +1 -1
  4. data/test/dummy/bower.json +3 -3
  5. data/test/dummy/db/test.sqlite3 +0 -0
  6. data/test/dummy/log/development.log +914 -0
  7. data/test/dummy/log/test.log +14364 -0
  8. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/1-WO2UjmfLs4SpjVZdSJGGMzBEsVGyxycwsDwVEQj1k.cache +0 -0
  9. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/1lwmN4qs8MJAzC_yfG97s_SBsqDZ7S3tjAhKpSGRoPk.cache +0 -0
  10. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/2W9ni6toILqWfZF81i5tLooI3KkJgLMV2Um69h4tACE.cache +0 -0
  11. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/888aULOiH1o8nErYVbar7so8TSiHMnVRkCJVrsFow-8.cache +1 -0
  12. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/C2zMBdauRoyKtP5-Hbx-3FKU63Wir8HxxhnsEQjnye4.cache +1 -0
  13. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/KmN1A2cbnIa89JVXdNUnbxekW6XoG37uQ7TOrUmla6M.cache +1 -0
  14. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/N2LaSeSkH9O3-nDAwbgQ3fvF1RyzULzIdW9tRkCFdiE.cache +1 -0
  15. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/NMX4CbiSfseLfHWah6QjF3ka-_q8iZ35lDHxpx5HZBc.cache +1 -0
  16. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/O97vuogdZekuQD9891VkdZtj2Ah9a6j_9SdFgHpRZPk.cache +3 -0
  17. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/RgNfOjSuRN575tirFTi553UywDtiZquNSKAUN4t_37E.cache +2 -0
  18. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/URfsWTq0WfX5JFf50HidIK1kGXYILlI3krzHQOlpGFw.cache +2 -0
  19. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/UqKz2K55R9dWSo9wYoLdN5lxNUXJFqA_7eipeyHMqQc.cache +1 -0
  20. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/WspjnlaWGkNP36-eIBusMx-VcvbF81RZ3L495DxSNNg.cache +1 -0
  21. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/XUYO10EzvYAECtPUgdBF8rPWs9x6tndCxSwdhYWmDpQ.cache +1 -0
  22. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ckF-gg5mdNyYLK2tDms9BdsP1vFw5VYxZ11u7l8vzfc.cache +0 -0
  23. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/cxoptH0sPRJzPLP351ISNHPjig_W2A_-5fLVnK3tFu0.cache +1 -0
  24. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/k5GkEt2yH5INFBgLUTsGEmzjRr5Ngh6FiXYfmbqh-Tg.cache +1 -0
  25. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/zIWnum7SG2OPux4uomf0kHpIZ5Nl1NfTAoHCdkHwZIY.cache +0 -0
  26. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/zgdP9EhEWd05XIYSWZx4uQKkuRklpRj6KiShg6HqIRo.cache +0 -0
  27. data/test/dummy/vendor/assets/bower_components/jquery/AUTHORS.txt +53 -24
  28. data/test/dummy/vendor/assets/bower_components/jquery/dist/core.js +481 -0
  29. data/test/dummy/vendor/assets/bower_components/jquery/dist/jquery.js +2706 -3647
  30. data/test/dummy/vendor/assets/bower_components/jquery/dist/jquery.min.js +4 -5
  31. data/test/dummy/vendor/assets/bower_components/jquery/dist/jquery.min.map +1 -1
  32. data/test/dummy/vendor/assets/bower_components/jquery/dist/jquery.slim.js +533 -444
  33. data/test/dummy/vendor/assets/bower_components/jquery/dist/jquery.slim.min.js +4 -4
  34. data/test/dummy/vendor/assets/bower_components/jquery/dist/jquery.slim.min.map +1 -1
  35. data/test/dummy/vendor/assets/bower_components/jquery/{sizzle → external/sizzle}/LICENSE.txt +0 -0
  36. data/test/dummy/vendor/assets/bower_components/jquery/{sizzle → external/sizzle}/dist/sizzle.js +154 -80
  37. data/test/dummy/vendor/assets/bower_components/jquery/external/sizzle/dist/sizzle.min.js +3 -0
  38. data/test/dummy/vendor/assets/bower_components/jquery/external/sizzle/dist/sizzle.min.map +1 -0
  39. data/test/dummy/vendor/assets/bower_components/jquery/src/ajax/jsonp.js +5 -3
  40. data/test/dummy/vendor/assets/bower_components/jquery/src/ajax/load.js +3 -11
  41. data/test/dummy/vendor/assets/bower_components/jquery/src/ajax/parseXML.js +9 -10
  42. data/test/dummy/vendor/assets/bower_components/jquery/src/ajax/script.js +26 -44
  43. data/test/dummy/vendor/assets/bower_components/jquery/src/ajax/var/location.js +2 -0
  44. data/test/dummy/vendor/assets/bower_components/jquery/src/ajax/var/nonce.js +2 -0
  45. data/test/dummy/vendor/assets/bower_components/jquery/src/ajax/var/rquery.js +2 -0
  46. data/test/dummy/vendor/assets/bower_components/jquery/src/ajax/xhr.js +138 -198
  47. data/test/dummy/vendor/assets/bower_components/jquery/src/ajax.js +104 -91
  48. data/test/dummy/vendor/assets/bower_components/jquery/src/attributes/attr.js +23 -167
  49. data/test/dummy/vendor/assets/bower_components/jquery/src/attributes/classes.js +18 -13
  50. data/test/dummy/vendor/assets/bower_components/jquery/src/attributes/prop.js +9 -37
  51. data/test/dummy/vendor/assets/bower_components/jquery/src/attributes/support.js +12 -49
  52. data/test/dummy/vendor/assets/bower_components/jquery/src/attributes/val.js +21 -28
  53. data/test/dummy/vendor/assets/bower_components/jquery/src/attributes.js +4 -2
  54. data/test/dummy/vendor/assets/bower_components/jquery/src/callbacks.js +5 -3
  55. data/test/dummy/vendor/assets/bower_components/jquery/src/core/DOMEval.js +2 -0
  56. data/test/dummy/vendor/assets/bower_components/jquery/src/core/access.js +8 -6
  57. data/test/dummy/vendor/assets/bower_components/jquery/src/core/init.js +13 -26
  58. data/test/dummy/vendor/assets/bower_components/jquery/src/core/parseHTML.js +32 -8
  59. data/test/dummy/vendor/assets/bower_components/jquery/src/core/ready-no-deferred.js +111 -0
  60. data/test/dummy/vendor/assets/bower_components/jquery/src/core/ready.js +32 -100
  61. data/test/dummy/vendor/assets/bower_components/jquery/src/core/readyException.js +13 -0
  62. data/test/dummy/vendor/assets/bower_components/jquery/src/core/support.js +3 -1
  63. data/test/dummy/vendor/assets/bower_components/jquery/src/core/var/rsingleTag.js +2 -1
  64. data/test/dummy/vendor/assets/bower_components/jquery/src/core.js +71 -119
  65. data/test/dummy/vendor/assets/bower_components/jquery/src/css/addGetHookIf.js +2 -0
  66. data/test/dummy/vendor/assets/bower_components/jquery/src/css/adjustCSS.js +8 -2
  67. data/test/dummy/vendor/assets/bower_components/jquery/src/css/curCSS.js +34 -112
  68. data/test/dummy/vendor/assets/bower_components/jquery/src/css/hiddenVisibleSelectors.js +7 -28
  69. data/test/dummy/vendor/assets/bower_components/jquery/src/css/showHide.js +69 -9
  70. data/test/dummy/vendor/assets/bower_components/jquery/src/css/support.js +48 -142
  71. data/test/dummy/vendor/assets/bower_components/jquery/src/css/var/cssExpand.js +2 -0
  72. data/test/dummy/vendor/assets/bower_components/jquery/src/css/var/getStyles.js +3 -1
  73. data/test/dummy/vendor/assets/bower_components/jquery/src/css/var/isHiddenWithinTree.js +34 -0
  74. data/test/dummy/vendor/assets/bower_components/jquery/src/css/var/rmargin.js +2 -0
  75. data/test/dummy/vendor/assets/bower_components/jquery/src/css/var/rnumnonpx.js +2 -0
  76. data/test/dummy/vendor/assets/bower_components/jquery/src/css/var/swap.js +2 -0
  77. data/test/dummy/vendor/assets/bower_components/jquery/src/css.js +71 -223
  78. data/test/dummy/vendor/assets/bower_components/jquery/src/data/Data.js +24 -63
  79. data/test/dummy/vendor/assets/bower_components/jquery/src/data/var/acceptData.js +11 -12
  80. data/test/dummy/vendor/assets/bower_components/jquery/src/data/var/dataPriv.js +2 -0
  81. data/test/dummy/vendor/assets/bower_components/jquery/src/data/var/dataUser.js +2 -0
  82. data/test/dummy/vendor/assets/bower_components/jquery/src/data.js +66 -247
  83. data/test/dummy/vendor/assets/bower_components/jquery/src/deferred/exceptionHook.js +4 -2
  84. data/test/dummy/vendor/assets/bower_components/jquery/src/deferred.js +290 -60
  85. data/test/dummy/vendor/assets/bower_components/jquery/src/deprecated.js +4 -8
  86. data/test/dummy/vendor/assets/bower_components/jquery/src/dimensions.js +9 -9
  87. data/test/dummy/vendor/assets/bower_components/jquery/src/effects/Tween.js +11 -9
  88. data/test/dummy/vendor/assets/bower_components/jquery/src/effects/animatedSelector.js +3 -1
  89. data/test/dummy/vendor/assets/bower_components/jquery/src/effects.js +183 -135
  90. data/test/dummy/vendor/assets/bower_components/jquery/src/event/ajax.js +2 -0
  91. data/test/dummy/vendor/assets/bower_components/jquery/src/event/alias.js +7 -3
  92. data/test/dummy/vendor/assets/bower_components/jquery/src/event/focusin.js +5 -3
  93. data/test/dummy/vendor/assets/bower_components/jquery/src/event/support.js +3 -20
  94. data/test/dummy/vendor/assets/bower_components/jquery/src/event/trigger.js +4 -18
  95. data/test/dummy/vendor/assets/bower_components/jquery/src/event.js +145 -553
  96. data/test/dummy/vendor/assets/bower_components/jquery/src/exports/amd.js +2 -0
  97. data/test/dummy/vendor/assets/bower_components/jquery/src/exports/global.js +10 -2
  98. data/test/dummy/vendor/assets/bower_components/jquery/src/jquery.js +4 -1
  99. data/test/dummy/vendor/assets/bower_components/jquery/src/manipulation/_evalUrl.js +2 -0
  100. data/test/dummy/vendor/assets/bower_components/jquery/src/manipulation/buildFragment.js +22 -75
  101. data/test/dummy/vendor/assets/bower_components/jquery/src/manipulation/getAll.js +9 -19
  102. data/test/dummy/vendor/assets/bower_components/jquery/src/manipulation/setGlobalEval.js +11 -8
  103. data/test/dummy/vendor/assets/bower_components/jquery/src/manipulation/support.js +13 -50
  104. data/test/dummy/vendor/assets/bower_components/jquery/src/manipulation/var/rcheckableType.js +2 -0
  105. data/test/dummy/vendor/assets/bower_components/jquery/src/manipulation/var/rscriptType.js +2 -0
  106. data/test/dummy/vendor/assets/bower_components/jquery/src/manipulation/var/rtagName.js +3 -1
  107. data/test/dummy/vendor/assets/bower_components/jquery/src/manipulation/wrapMap.js +11 -12
  108. data/test/dummy/vendor/assets/bower_components/jquery/src/manipulation.js +104 -203
  109. data/test/dummy/vendor/assets/bower_components/jquery/src/offset.js +64 -51
  110. data/test/dummy/vendor/assets/bower_components/jquery/src/queue/delay.js +3 -1
  111. data/test/dummy/vendor/assets/bower_components/jquery/src/queue.js +12 -11
  112. data/test/dummy/vendor/assets/bower_components/jquery/src/selector-native.js +29 -3
  113. data/test/dummy/vendor/assets/bower_components/jquery/src/selector-sizzle.js +5 -0
  114. data/test/dummy/vendor/assets/bower_components/jquery/src/selector.js +3 -1
  115. data/test/dummy/vendor/assets/bower_components/jquery/src/serialize.js +13 -12
  116. data/test/dummy/vendor/assets/bower_components/jquery/src/traversing/findFilter.js +9 -10
  117. data/test/dummy/vendor/assets/bower_components/jquery/src/traversing/var/dir.js +2 -0
  118. data/test/dummy/vendor/assets/bower_components/jquery/src/traversing/var/rneedsContext.js +2 -0
  119. data/test/dummy/vendor/assets/bower_components/jquery/src/traversing/var/siblings.js +2 -0
  120. data/test/dummy/vendor/assets/bower_components/jquery/src/traversing.js +36 -37
  121. data/test/dummy/vendor/assets/bower_components/jquery/src/var/ObjectFunctionString.js +7 -0
  122. data/test/dummy/vendor/assets/bower_components/jquery/src/var/arr.js +2 -0
  123. data/test/dummy/vendor/assets/bower_components/jquery/src/var/class2type.js +1 -0
  124. data/test/dummy/vendor/assets/bower_components/jquery/src/var/concat.js +5 -3
  125. data/test/dummy/vendor/assets/bower_components/jquery/src/var/document.js +2 -0
  126. data/test/dummy/vendor/assets/bower_components/jquery/src/var/documentElement.js +2 -0
  127. data/test/dummy/vendor/assets/bower_components/jquery/src/var/fnToString.js +7 -0
  128. data/test/dummy/vendor/assets/bower_components/jquery/src/var/getProto.js +5 -0
  129. data/test/dummy/vendor/assets/bower_components/jquery/src/var/hasOwn.js +2 -0
  130. data/test/dummy/vendor/assets/bower_components/jquery/src/var/indexOf.js +5 -3
  131. data/test/dummy/vendor/assets/bower_components/jquery/src/var/pnum.js +2 -0
  132. data/test/dummy/vendor/assets/bower_components/jquery/src/var/push.js +5 -3
  133. data/test/dummy/vendor/assets/bower_components/jquery/src/var/rcssNum.js +2 -0
  134. data/test/dummy/vendor/assets/bower_components/jquery/src/var/rnotwhite.js +2 -0
  135. data/test/dummy/vendor/assets/bower_components/jquery/src/var/slice.js +5 -3
  136. data/test/dummy/vendor/assets/bower_components/jquery/src/var/support.js +1 -0
  137. data/test/dummy/vendor/assets/bower_components/jquery/src/var/toString.js +2 -0
  138. data/test/dummy/vendor/assets/bower_components/jquery/src/wrap.js +14 -14
  139. data/test/dummy/vendor/assets/bower_components/lie/bower.json +1 -1
  140. data/test/dummy/vendor/assets/bower_components/lie/component.json +1 -1
  141. data/test/dummy/vendor/assets/bower_components/lie/dist/lie.js +80 -80
  142. data/test/dummy/vendor/assets/bower_components/lie/dist/lie.min.js +1 -1
  143. data/test/dummy/vendor/assets/bower_components/lie/dist/lie.polyfill.js +9 -9
  144. data/test/dummy/vendor/assets/bower_components/lie/dist/lie.polyfill.min.js +1 -1
  145. data/test/dummy/vendor/assets/bower_components/lie/lib/browser.js +253 -0
  146. data/test/dummy/vendor/assets/bower_components/lie/lib/index.js +5 -5
  147. data/test/dummy/vendor/assets/bower_components/lie/package.json +28 -19
  148. data/test/dummy/vendor/assets/bower_components/lie/src/index.js +278 -0
  149. metadata +62 -36
  150. data/test/dummy/vendor/assets/bower_components/jquery/sizzle/dist/sizzle.min.js +0 -3
  151. data/test/dummy/vendor/assets/bower_components/jquery/sizzle/dist/sizzle.min.map +0 -1
  152. data/test/dummy/vendor/assets/bower_components/jquery/src/ajax/parseJSON.js +0 -53
  153. data/test/dummy/vendor/assets/bower_components/jquery/src/css/defaultDisplay.js +0 -72
  154. data/test/dummy/vendor/assets/bower_components/jquery/src/css/var/isHidden.js +0 -16
  155. data/test/dummy/vendor/assets/bower_components/jquery/src/data/accepts.js +0 -20
  156. data/test/dummy/vendor/assets/bower_components/jquery/src/data/support.js +0 -23
  157. data/test/dummy/vendor/assets/bower_components/jquery/src/effects/support.js +0 -58
  158. data/test/dummy/vendor/assets/bower_components/jquery/src/intro.js +0 -44
  159. data/test/dummy/vendor/assets/bower_components/jquery/src/manipulation/createSafeFragment.js +0 -20
  160. data/test/dummy/vendor/assets/bower_components/jquery/src/manipulation/var/nodeNames.js +0 -5
  161. data/test/dummy/vendor/assets/bower_components/jquery/src/manipulation/var/rleadingWhitespace.js +0 -3
  162. data/test/dummy/vendor/assets/bower_components/jquery/src/outro.js +0 -2
  163. data/test/dummy/vendor/assets/bower_components/jquery/src/support.js +0 -63
  164. data/test/dummy/vendor/assets/bower_components/jquery/src/var/deletedIds.js +0 -3
@@ -1,21 +1,20 @@
1
1
  define( [
2
2
  "./core",
3
3
  "./var/document",
4
+ "./var/documentElement",
4
5
  "./var/rnotwhite",
5
- "./var/hasOwn",
6
6
  "./var/slice",
7
- "./event/support",
8
- "./data/var/acceptData",
7
+ "./data/var/dataPriv",
9
8
 
10
9
  "./core/init",
11
- "./data",
12
10
  "./selector"
13
- ], function( jQuery, document, rnotwhite, hasOwn, slice, support, acceptData ) {
11
+ ], function( jQuery, document, documentElement, rnotwhite, slice, dataPriv ) {
14
12
 
15
- var rformElems = /^(?:input|select|textarea)$/i,
13
+ "use strict";
14
+
15
+ var
16
16
  rkeyEvent = /^key/,
17
17
  rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
18
- rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
19
18
  rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
20
19
 
21
20
  function returnTrue() {
@@ -26,7 +25,7 @@ function returnFalse() {
26
25
  return false;
27
26
  }
28
27
 
29
- // Support: IE9
28
+ // Support: IE <=9 only
30
29
  // See #13393 for more info
31
30
  function safeActiveElement() {
32
31
  try {
@@ -104,10 +103,11 @@ jQuery.event = {
104
103
  global: {},
105
104
 
106
105
  add: function( elem, types, handler, data, selector ) {
107
- var tmp, events, t, handleObjIn,
108
- special, eventHandle, handleObj,
109
- handlers, type, namespaces, origType,
110
- elemData = jQuery._data( elem );
106
+
107
+ var handleObjIn, eventHandle, tmp,
108
+ events, t, handleObj,
109
+ special, handlers, type, namespaces, origType,
110
+ elemData = dataPriv.get( elem );
111
111
 
112
112
  // Don't attach events to noData or text/comment nodes (but allow plain objects)
113
113
  if ( !elemData ) {
@@ -121,6 +121,12 @@ jQuery.event = {
121
121
  selector = handleObjIn.selector;
122
122
  }
123
123
 
124
+ // Ensure that invalid selectors throw exceptions at attach time
125
+ // Evaluate against documentElement in case elem is a non-element node (e.g., document)
126
+ if ( selector ) {
127
+ jQuery.find.matchesSelector( documentElement, selector );
128
+ }
129
+
124
130
  // Make sure that the handler has a unique ID, used to find/remove it later
125
131
  if ( !handler.guid ) {
126
132
  handler.guid = jQuery.guid++;
@@ -135,15 +141,9 @@ jQuery.event = {
135
141
 
136
142
  // Discard the second event of a jQuery.event.trigger() and
137
143
  // when an event is called after a page has unloaded
138
- return typeof jQuery !== "undefined" &&
139
- ( !e || jQuery.event.triggered !== e.type ) ?
140
- jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
141
- undefined;
144
+ return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
145
+ jQuery.event.dispatch.apply( elem, arguments ) : undefined;
142
146
  };
143
-
144
- // Add elem as a property of the handle fn to prevent a memory leak
145
- // with IE non-native events
146
- eventHandle.elem = elem;
147
147
  }
148
148
 
149
149
  // Handle multiple events separated by a space
@@ -185,16 +185,12 @@ jQuery.event = {
185
185
  handlers = events[ type ] = [];
186
186
  handlers.delegateCount = 0;
187
187
 
188
- // Only use addEventListener/attachEvent if the special events handler returns false
188
+ // Only use addEventListener if the special events handler returns false
189
189
  if ( !special.setup ||
190
190
  special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
191
191
 
192
- // Bind the global event handler to the element
193
192
  if ( elem.addEventListener ) {
194
- elem.addEventListener( type, eventHandle, false );
195
-
196
- } else if ( elem.attachEvent ) {
197
- elem.attachEvent( "on" + type, eventHandle );
193
+ elem.addEventListener( type, eventHandle );
198
194
  }
199
195
  }
200
196
  }
@@ -218,17 +214,15 @@ jQuery.event = {
218
214
  jQuery.event.global[ type ] = true;
219
215
  }
220
216
 
221
- // Nullify elem to prevent memory leaks in IE
222
- elem = null;
223
217
  },
224
218
 
225
219
  // Detach an event or set of events from an element
226
220
  remove: function( elem, types, handler, selector, mappedTypes ) {
227
- var j, handleObj, tmp,
228
- origCount, t, events,
229
- special, handlers, type,
230
- namespaces, origType,
231
- elemData = jQuery.hasData( elem ) && jQuery._data( elem );
221
+
222
+ var j, origCount, tmp,
223
+ events, t, handleObj,
224
+ special, handlers, type, namespaces, origType,
225
+ elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
232
226
 
233
227
  if ( !elemData || !( events = elemData.events ) ) {
234
228
  return;
@@ -290,174 +284,29 @@ jQuery.event = {
290
284
  }
291
285
  }
292
286
 
293
- // Remove the expando if it's no longer used
287
+ // Remove data and the expando if it's no longer used
294
288
  if ( jQuery.isEmptyObject( events ) ) {
295
- delete elemData.handle;
296
-
297
- // removeData also checks for emptiness and clears the expando if empty
298
- // so use it instead of delete
299
- jQuery._removeData( elem, "events" );
300
- }
301
- },
302
-
303
- trigger: function( event, data, elem, onlyHandlers ) {
304
- var handle, ontype, cur,
305
- bubbleType, special, tmp, i,
306
- eventPath = [ elem || document ],
307
- type = hasOwn.call( event, "type" ) ? event.type : event,
308
- namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
309
-
310
- cur = tmp = elem = elem || document;
311
-
312
- // Don't do events on text and comment nodes
313
- if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
314
- return;
315
- }
316
-
317
- // focus/blur morphs to focusin/out; ensure we're not firing them right now
318
- if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
319
- return;
320
- }
321
-
322
- if ( type.indexOf( "." ) > -1 ) {
323
-
324
- // Namespaced trigger; create a regexp to match event type in handle()
325
- namespaces = type.split( "." );
326
- type = namespaces.shift();
327
- namespaces.sort();
328
- }
329
- ontype = type.indexOf( ":" ) < 0 && "on" + type;
330
-
331
- // Caller can pass in a jQuery.Event object, Object, or just an event type string
332
- event = event[ jQuery.expando ] ?
333
- event :
334
- new jQuery.Event( type, typeof event === "object" && event );
335
-
336
- // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
337
- event.isTrigger = onlyHandlers ? 2 : 3;
338
- event.namespace = namespaces.join( "." );
339
- event.rnamespace = event.namespace ?
340
- new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
341
- null;
342
-
343
- // Clean up the event in case it is being reused
344
- event.result = undefined;
345
- if ( !event.target ) {
346
- event.target = elem;
347
- }
348
-
349
- // Clone any incoming data and prepend the event, creating the handler arg list
350
- data = data == null ?
351
- [ event ] :
352
- jQuery.makeArray( data, [ event ] );
353
-
354
- // Allow special events to draw outside the lines
355
- special = jQuery.event.special[ type ] || {};
356
- if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
357
- return;
358
- }
359
-
360
- // Determine event propagation path in advance, per W3C events spec (#9951)
361
- // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
362
- if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
363
-
364
- bubbleType = special.delegateType || type;
365
- if ( !rfocusMorph.test( bubbleType + type ) ) {
366
- cur = cur.parentNode;
367
- }
368
- for ( ; cur; cur = cur.parentNode ) {
369
- eventPath.push( cur );
370
- tmp = cur;
371
- }
372
-
373
- // Only add window if we got to document (e.g., not plain obj or detached DOM)
374
- if ( tmp === ( elem.ownerDocument || document ) ) {
375
- eventPath.push( tmp.defaultView || tmp.parentWindow || window );
376
- }
377
- }
378
-
379
- // Fire handlers on the event path
380
- i = 0;
381
- while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
382
-
383
- event.type = i > 1 ?
384
- bubbleType :
385
- special.bindType || type;
386
-
387
- // jQuery handler
388
- handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] &&
389
- jQuery._data( cur, "handle" );
390
-
391
- if ( handle ) {
392
- handle.apply( cur, data );
393
- }
394
-
395
- // Native handler
396
- handle = ontype && cur[ ontype ];
397
- if ( handle && handle.apply && acceptData( cur ) ) {
398
- event.result = handle.apply( cur, data );
399
- if ( event.result === false ) {
400
- event.preventDefault();
401
- }
402
- }
403
- }
404
- event.type = type;
405
-
406
- // If nobody prevented the default action, do it now
407
- if ( !onlyHandlers && !event.isDefaultPrevented() ) {
408
-
409
- if (
410
- ( !special._default ||
411
- special._default.apply( eventPath.pop(), data ) === false
412
- ) && acceptData( elem )
413
- ) {
414
-
415
- // Call a native DOM method on the target with the same name name as the event.
416
- // Can't use an .isFunction() check here because IE6/7 fails that test.
417
- // Don't do default actions on window, that's where global variables be (#6170)
418
- if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) {
419
-
420
- // Don't re-trigger an onFOO event when we call its FOO() method
421
- tmp = elem[ ontype ];
422
-
423
- if ( tmp ) {
424
- elem[ ontype ] = null;
425
- }
426
-
427
- // Prevent re-triggering of the same event, since we already bubbled it above
428
- jQuery.event.triggered = type;
429
- try {
430
- elem[ type ]();
431
- } catch ( e ) {
432
-
433
- // IE<9 dies on focus/blur to hidden element (#1486,#12518)
434
- // only reproducible on winXP IE8 native, not IE9 in IE8 mode
435
- }
436
- jQuery.event.triggered = undefined;
437
-
438
- if ( tmp ) {
439
- elem[ ontype ] = tmp;
440
- }
441
- }
442
- }
289
+ dataPriv.remove( elem, "handle events" );
443
290
  }
444
-
445
- return event.result;
446
291
  },
447
292
 
448
- dispatch: function( event ) {
293
+ dispatch: function( nativeEvent ) {
449
294
 
450
295
  // Make a writable jQuery.Event from the native event object
451
- event = jQuery.event.fix( event );
296
+ var event = jQuery.event.fix( nativeEvent );
452
297
 
453
- var i, j, ret, matched, handleObj,
454
- handlerQueue = [],
455
- args = slice.call( arguments ),
456
- handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [],
298
+ var i, j, ret, matched, handleObj, handlerQueue,
299
+ args = new Array( arguments.length ),
300
+ handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],
457
301
  special = jQuery.event.special[ event.type ] || {};
458
302
 
459
303
  // Use the fix-ed jQuery.Event rather than the (read-only) native event
460
304
  args[ 0 ] = event;
305
+
306
+ for ( i = 1; i < arguments.length; i++ ) {
307
+ args[ i ] = arguments[ i ];
308
+ }
309
+
461
310
  event.delegateTarget = this;
462
311
 
463
312
  // Call the preDispatch hook for the mapped type, and let it bail if desired
@@ -511,18 +360,16 @@ jQuery.event = {
511
360
  delegateCount = handlers.delegateCount,
512
361
  cur = event.target;
513
362
 
514
- // Support (at least): Chrome, IE9
363
+ // Support: IE <=9
515
364
  // Find delegate handlers
516
365
  // Black-hole SVG <use> instance trees (#13180)
517
366
  //
518
- // Support: Firefox<=42+
367
+ // Support: Firefox <=42
519
368
  // Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343)
520
369
  if ( delegateCount && cur.nodeType &&
521
370
  ( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) {
522
371
 
523
- /* jshint eqeqeq: false */
524
- for ( ; cur != this; cur = cur.parentNode || this ) {
525
- /* jshint eqeqeq: true */
372
+ for ( ; cur !== this; cur = cur.parentNode || this ) {
526
373
 
527
374
  // Don't check non-elements (#13208)
528
375
  // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
@@ -558,108 +405,38 @@ jQuery.event = {
558
405
  return handlerQueue;
559
406
  },
560
407
 
561
- fix: function( event ) {
562
- if ( event[ jQuery.expando ] ) {
563
- return event;
564
- }
565
-
566
- // Create a writable copy of the event object and normalize some properties
567
- var i, prop, copy,
568
- type = event.type,
569
- originalEvent = event,
570
- fixHook = this.fixHooks[ type ];
571
-
572
- if ( !fixHook ) {
573
- this.fixHooks[ type ] = fixHook =
574
- rmouseEvent.test( type ) ? this.mouseHooks :
575
- rkeyEvent.test( type ) ? this.keyHooks :
576
- {};
577
- }
578
- copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
579
-
580
- event = new jQuery.Event( originalEvent );
581
-
582
- i = copy.length;
583
- while ( i-- ) {
584
- prop = copy[ i ];
585
- event[ prop ] = originalEvent[ prop ];
586
- }
587
-
588
- // Support: IE<9
589
- // Fix target property (#1925)
590
- if ( !event.target ) {
591
- event.target = originalEvent.srcElement || document;
592
- }
408
+ addProp: function( name, hook ) {
409
+ Object.defineProperty( jQuery.Event.prototype, name, {
410
+ enumerable: true,
411
+ configurable: true,
593
412
 
594
- // Support: Safari 6-8+
595
- // Target should not be a text node (#504, #13143)
596
- if ( event.target.nodeType === 3 ) {
597
- event.target = event.target.parentNode;
598
- }
599
-
600
- // Support: IE<9
601
- // For mouse/key events, metaKey==false if it's undefined (#3368, #11328)
602
- event.metaKey = !!event.metaKey;
603
-
604
- return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
605
- },
606
-
607
- // Includes some event props shared by KeyEvent and MouseEvent
608
- props: ( "altKey bubbles cancelable ctrlKey currentTarget detail eventPhase " +
609
- "metaKey relatedTarget shiftKey target timeStamp view which" ).split( " " ),
610
-
611
- fixHooks: {},
612
-
613
- keyHooks: {
614
- props: "char charCode key keyCode".split( " " ),
615
- filter: function( event, original ) {
616
-
617
- // Add which for key events
618
- if ( event.which == null ) {
619
- event.which = original.charCode != null ? original.charCode : original.keyCode;
413
+ get: jQuery.isFunction( hook ) ?
414
+ function() {
415
+ if ( this.originalEvent ) {
416
+ return hook( this.originalEvent );
417
+ }
418
+ } :
419
+ function() {
420
+ if ( this.originalEvent ) {
421
+ return this.originalEvent[ name ];
422
+ }
423
+ },
424
+
425
+ set: function( value ) {
426
+ Object.defineProperty( this, name, {
427
+ enumerable: true,
428
+ configurable: true,
429
+ writable: true,
430
+ value: value
431
+ } );
620
432
  }
621
-
622
- return event;
623
- }
433
+ } );
624
434
  },
625
435
 
626
- mouseHooks: {
627
- props: ( "button buttons clientX clientY fromElement offsetX offsetY " +
628
- "pageX pageY screenX screenY toElement" ).split( " " ),
629
- filter: function( event, original ) {
630
- var body, eventDoc, doc,
631
- button = original.button,
632
- fromElement = original.fromElement;
633
-
634
- // Calculate pageX/Y if missing and clientX/Y available
635
- if ( event.pageX == null && original.clientX != null ) {
636
- eventDoc = event.target.ownerDocument || document;
637
- doc = eventDoc.documentElement;
638
- body = eventDoc.body;
639
-
640
- event.pageX = original.clientX +
641
- ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) -
642
- ( doc && doc.clientLeft || body && body.clientLeft || 0 );
643
- event.pageY = original.clientY +
644
- ( doc && doc.scrollTop || body && body.scrollTop || 0 ) -
645
- ( doc && doc.clientTop || body && body.clientTop || 0 );
646
- }
647
-
648
- // Add relatedTarget, if necessary
649
- if ( !event.relatedTarget && fromElement ) {
650
- event.relatedTarget = fromElement === event.target ?
651
- original.toElement :
652
- fromElement;
653
- }
654
-
655
- // Add which for click: 1 === left; 2 === middle; 3 === right
656
- // Note: button is not normalized, so don't use it
657
- if ( !event.which && button !== undefined ) {
658
- event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
659
- }
660
-
661
- return event;
662
- }
436
+ fix: function( originalEvent ) {
437
+ return originalEvent[ jQuery.expando ] ?
438
+ originalEvent :
439
+ new jQuery.Event( originalEvent );
663
440
  },
664
441
 
665
442
  special: {
@@ -673,15 +450,8 @@ jQuery.event = {
673
450
  // Fire native event if possible so blur/focus sequence is correct
674
451
  trigger: function() {
675
452
  if ( this !== safeActiveElement() && this.focus ) {
676
- try {
677
- this.focus();
678
- return false;
679
- } catch ( e ) {
680
-
681
- // Support: IE<9
682
- // If we error on focus to hidden element (#1486, #12518),
683
- // let .trigger() run the handlers
684
- }
453
+ this.focus();
454
+ return false;
685
455
  }
686
456
  },
687
457
  delegateType: "focusin"
@@ -699,7 +469,7 @@ jQuery.event = {
699
469
 
700
470
  // For checkbox, fire native event so checked state will be right
701
471
  trigger: function() {
702
- if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) {
472
+ if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) {
703
473
  this.click();
704
474
  return false;
705
475
  }
@@ -721,59 +491,16 @@ jQuery.event = {
721
491
  }
722
492
  }
723
493
  }
724
- },
725
-
726
- // Piggyback on a donor event to simulate a different one
727
- simulate: function( type, elem, event ) {
728
- var e = jQuery.extend(
729
- new jQuery.Event(),
730
- event,
731
- {
732
- type: type,
733
- isSimulated: true
734
-
735
- // Previously, `originalEvent: {}` was set here, so stopPropagation call
736
- // would not be triggered on donor event, since in our own
737
- // jQuery.event.stopPropagation function we had a check for existence of
738
- // originalEvent.stopPropagation method, so, consequently it would be a noop.
739
- //
740
- // Guard for simulated events was moved to jQuery.event.stopPropagation function
741
- // since `originalEvent` should point to the original event for the
742
- // constancy with other events and for more focused logic
743
- }
744
- );
745
-
746
- jQuery.event.trigger( e, null, elem );
747
-
748
- if ( e.isDefaultPrevented() ) {
749
- event.preventDefault();
750
- }
751
494
  }
752
495
  };
753
496
 
754
- jQuery.removeEvent = document.removeEventListener ?
755
- function( elem, type, handle ) {
497
+ jQuery.removeEvent = function( elem, type, handle ) {
756
498
 
757
- // This "if" is needed for plain objects
758
- if ( elem.removeEventListener ) {
759
- elem.removeEventListener( type, handle );
760
- }
761
- } :
762
- function( elem, type, handle ) {
763
- var name = "on" + type;
764
-
765
- if ( elem.detachEvent ) {
766
-
767
- // #8545, #7054, preventing memory leaks for custom events in IE6-8
768
- // detachEvent needed property on element, by name of that event,
769
- // to properly expose it to GC
770
- if ( typeof elem[ name ] === "undefined" ) {
771
- elem[ name ] = null;
772
- }
773
-
774
- elem.detachEvent( name, handle );
775
- }
776
- };
499
+ // This "if" is needed for plain objects
500
+ if ( elem.removeEventListener ) {
501
+ elem.removeEventListener( type, handle );
502
+ }
503
+ };
777
504
 
778
505
  jQuery.Event = function( src, props ) {
779
506
 
@@ -792,11 +519,21 @@ jQuery.Event = function( src, props ) {
792
519
  this.isDefaultPrevented = src.defaultPrevented ||
793
520
  src.defaultPrevented === undefined &&
794
521
 
795
- // Support: IE < 9, Android < 4.0
522
+ // Support: Android <=2.3 only
796
523
  src.returnValue === false ?
797
524
  returnTrue :
798
525
  returnFalse;
799
526
 
527
+ // Create target properties
528
+ // Support: Safari <=6 - 7 only
529
+ // Target should not be a text node (#504, #13143)
530
+ this.target = ( src.target && src.target.nodeType === 3 ) ?
531
+ src.target.parentNode :
532
+ src.target;
533
+
534
+ this.currentTarget = src.currentTarget;
535
+ this.relatedTarget = src.relatedTarget;
536
+
800
537
  // Event type
801
538
  } else {
802
539
  this.type = src;
@@ -815,29 +552,21 @@ jQuery.Event = function( src, props ) {
815
552
  };
816
553
 
817
554
  // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
818
- // http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
555
+ // https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
819
556
  jQuery.Event.prototype = {
820
557
  constructor: jQuery.Event,
821
558
  isDefaultPrevented: returnFalse,
822
559
  isPropagationStopped: returnFalse,
823
560
  isImmediatePropagationStopped: returnFalse,
561
+ isSimulated: false,
824
562
 
825
563
  preventDefault: function() {
826
564
  var e = this.originalEvent;
827
565
 
828
566
  this.isDefaultPrevented = returnTrue;
829
- if ( !e ) {
830
- return;
831
- }
832
567
 
833
- // If preventDefault exists, run it on the original event
834
- if ( e.preventDefault ) {
568
+ if ( e && !this.isSimulated ) {
835
569
  e.preventDefault();
836
-
837
- // Support: IE
838
- // Otherwise set the returnValue property of the original event to false
839
- } else {
840
- e.returnValue = false;
841
570
  }
842
571
  },
843
572
  stopPropagation: function() {
@@ -845,25 +574,16 @@ jQuery.Event.prototype = {
845
574
 
846
575
  this.isPropagationStopped = returnTrue;
847
576
 
848
- if ( !e || this.isSimulated ) {
849
- return;
850
- }
851
-
852
- // If stopPropagation exists, run it on the original event
853
- if ( e.stopPropagation ) {
577
+ if ( e && !this.isSimulated ) {
854
578
  e.stopPropagation();
855
579
  }
856
-
857
- // Support: IE
858
- // Set the cancelBubble property of the original event to true
859
- e.cancelBubble = true;
860
580
  },
861
581
  stopImmediatePropagation: function() {
862
582
  var e = this.originalEvent;
863
583
 
864
584
  this.isImmediatePropagationStopped = returnTrue;
865
585
 
866
- if ( e && e.stopImmediatePropagation ) {
586
+ if ( e && !this.isSimulated ) {
867
587
  e.stopImmediatePropagation();
868
588
  }
869
589
 
@@ -871,13 +591,62 @@ jQuery.Event.prototype = {
871
591
  }
872
592
  };
873
593
 
594
+ // Includes all common event props including KeyEvent and MouseEvent specific props
595
+ jQuery.each( {
596
+ altKey: true,
597
+ bubbles: true,
598
+ cancelable: true,
599
+ changedTouches: true,
600
+ ctrlKey: true,
601
+ detail: true,
602
+ eventPhase: true,
603
+ metaKey: true,
604
+ pageX: true,
605
+ pageY: true,
606
+ shiftKey: true,
607
+ view: true,
608
+ "char": true,
609
+ charCode: true,
610
+ key: true,
611
+ keyCode: true,
612
+ button: true,
613
+ buttons: true,
614
+ clientX: true,
615
+ clientY: true,
616
+ offsetX: true,
617
+ offsetY: true,
618
+ pointerId: true,
619
+ pointerType: true,
620
+ screenX: true,
621
+ screenY: true,
622
+ targetTouches: true,
623
+ toElement: true,
624
+ touches: true,
625
+
626
+ which: function( event ) {
627
+ var button = event.button;
628
+
629
+ // Add which for key events
630
+ if ( event.which == null && rkeyEvent.test( event.type ) ) {
631
+ return event.charCode != null ? event.charCode : event.keyCode;
632
+ }
633
+
634
+ // Add which for click: 1 === left; 2 === middle; 3 === right
635
+ if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {
636
+ return ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
637
+ }
638
+
639
+ return event.which;
640
+ }
641
+ }, jQuery.event.addProp );
642
+
874
643
  // Create mouseenter/leave events using mouseover/out and event-time checks
875
644
  // so that event delegation works in jQuery.
876
645
  // Do the same for pointerenter/pointerleave and pointerover/pointerout
877
646
  //
878
647
  // Support: Safari 7 only
879
648
  // Safari sends mouseenter too often; see:
880
- // https://code.google.com/p/chromium/issues/detail?id=470258
649
+ // https://bugs.chromium.org/p/chromium/issues/detail?id=470258
881
650
  // for the description of the bug (it existed in older Chrome versions as well).
882
651
  jQuery.each( {
883
652
  mouseenter: "mouseover",
@@ -907,171 +676,6 @@ jQuery.each( {
907
676
  };
908
677
  } );
909
678
 
910
- // IE submit delegation
911
- if ( !support.submit ) {
912
-
913
- jQuery.event.special.submit = {
914
- setup: function() {
915
-
916
- // Only need this for delegated form submit events
917
- if ( jQuery.nodeName( this, "form" ) ) {
918
- return false;
919
- }
920
-
921
- // Lazy-add a submit handler when a descendant form may potentially be submitted
922
- jQuery.event.add( this, "click._submit keypress._submit", function( e ) {
923
-
924
- // Node name check avoids a VML-related crash in IE (#9807)
925
- var elem = e.target,
926
- form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ?
927
-
928
- // Support: IE <=8
929
- // We use jQuery.prop instead of elem.form
930
- // to allow fixing the IE8 delegated submit issue (gh-2332)
931
- // by 3rd party polyfills/workarounds.
932
- jQuery.prop( elem, "form" ) :
933
- undefined;
934
-
935
- if ( form && !jQuery._data( form, "submit" ) ) {
936
- jQuery.event.add( form, "submit._submit", function( event ) {
937
- event._submitBubble = true;
938
- } );
939
- jQuery._data( form, "submit", true );
940
- }
941
- } );
942
-
943
- // return undefined since we don't need an event listener
944
- },
945
-
946
- postDispatch: function( event ) {
947
-
948
- // If form was submitted by the user, bubble the event up the tree
949
- if ( event._submitBubble ) {
950
- delete event._submitBubble;
951
- if ( this.parentNode && !event.isTrigger ) {
952
- jQuery.event.simulate( "submit", this.parentNode, event );
953
- }
954
- }
955
- },
956
-
957
- teardown: function() {
958
-
959
- // Only need this for delegated form submit events
960
- if ( jQuery.nodeName( this, "form" ) ) {
961
- return false;
962
- }
963
-
964
- // Remove delegated handlers; cleanData eventually reaps submit handlers attached above
965
- jQuery.event.remove( this, "._submit" );
966
- }
967
- };
968
- }
969
-
970
- // IE change delegation and checkbox/radio fix
971
- if ( !support.change ) {
972
-
973
- jQuery.event.special.change = {
974
-
975
- setup: function() {
976
-
977
- if ( rformElems.test( this.nodeName ) ) {
978
-
979
- // IE doesn't fire change on a check/radio until blur; trigger it on click
980
- // after a propertychange. Eat the blur-change in special.change.handle.
981
- // This still fires onchange a second time for check/radio after blur.
982
- if ( this.type === "checkbox" || this.type === "radio" ) {
983
- jQuery.event.add( this, "propertychange._change", function( event ) {
984
- if ( event.originalEvent.propertyName === "checked" ) {
985
- this._justChanged = true;
986
- }
987
- } );
988
- jQuery.event.add( this, "click._change", function( event ) {
989
- if ( this._justChanged && !event.isTrigger ) {
990
- this._justChanged = false;
991
- }
992
-
993
- // Allow triggered, simulated change events (#11500)
994
- jQuery.event.simulate( "change", this, event );
995
- } );
996
- }
997
- return false;
998
- }
999
-
1000
- // Delegated event; lazy-add a change handler on descendant inputs
1001
- jQuery.event.add( this, "beforeactivate._change", function( e ) {
1002
- var elem = e.target;
1003
-
1004
- if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "change" ) ) {
1005
- jQuery.event.add( elem, "change._change", function( event ) {
1006
- if ( this.parentNode && !event.isSimulated && !event.isTrigger ) {
1007
- jQuery.event.simulate( "change", this.parentNode, event );
1008
- }
1009
- } );
1010
- jQuery._data( elem, "change", true );
1011
- }
1012
- } );
1013
- },
1014
-
1015
- handle: function( event ) {
1016
- var elem = event.target;
1017
-
1018
- // Swallow native change events from checkbox/radio, we already triggered them above
1019
- if ( this !== elem || event.isSimulated || event.isTrigger ||
1020
- ( elem.type !== "radio" && elem.type !== "checkbox" ) ) {
1021
-
1022
- return event.handleObj.handler.apply( this, arguments );
1023
- }
1024
- },
1025
-
1026
- teardown: function() {
1027
- jQuery.event.remove( this, "._change" );
1028
-
1029
- return !rformElems.test( this.nodeName );
1030
- }
1031
- };
1032
- }
1033
-
1034
- // Support: Firefox
1035
- // Firefox doesn't have focus(in | out) events
1036
- // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
1037
- //
1038
- // Support: Chrome, Safari
1039
- // focus(in | out) events fire after focus & blur events,
1040
- // which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
1041
- // Related ticket - https://code.google.com/p/chromium/issues/detail?id=449857
1042
- if ( !support.focusin ) {
1043
- jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
1044
-
1045
- // Attach a single capturing handler on the document while someone wants focusin/focusout
1046
- var handler = function( event ) {
1047
- jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );
1048
- };
1049
-
1050
- jQuery.event.special[ fix ] = {
1051
- setup: function() {
1052
- var doc = this.ownerDocument || this,
1053
- attaches = jQuery._data( doc, fix );
1054
-
1055
- if ( !attaches ) {
1056
- doc.addEventListener( orig, handler, true );
1057
- }
1058
- jQuery._data( doc, fix, ( attaches || 0 ) + 1 );
1059
- },
1060
- teardown: function() {
1061
- var doc = this.ownerDocument || this,
1062
- attaches = jQuery._data( doc, fix ) - 1;
1063
-
1064
- if ( !attaches ) {
1065
- doc.removeEventListener( orig, handler, true );
1066
- jQuery._removeData( doc, fix );
1067
- } else {
1068
- jQuery._data( doc, fix, attaches );
1069
- }
1070
- }
1071
- };
1072
- } );
1073
- }
1074
-
1075
679
  jQuery.fn.extend( {
1076
680
 
1077
681
  on: function( types, selector, data, fn ) {
@@ -1115,18 +719,6 @@ jQuery.fn.extend( {
1115
719
  return this.each( function() {
1116
720
  jQuery.event.remove( this, types, fn, selector );
1117
721
  } );
1118
- },
1119
-
1120
- trigger: function( type, data ) {
1121
- return this.each( function() {
1122
- jQuery.event.trigger( type, data, this );
1123
- } );
1124
- },
1125
- triggerHandler: function( type, data ) {
1126
- var elem = this[ 0 ];
1127
- if ( elem ) {
1128
- return jQuery.event.trigger( type, data, elem, true );
1129
- }
1130
722
  }
1131
723
  } );
1132
724