jQuery中提供了哪些钩子?
官方只有$.cssHooks
记录在jQuery API文档中 ,并且$.valHooks
在一个句子中被提及,用于解决.val()
的已知问题。
我想知道除了这两个之外,jQuery中有多少个钩子,我们应该在插件开发中使用$.valHooks
吗? 如果是这样,我认为它应该被记录为专门的主题而不是仅仅一句话。
有8种不同类型的外露钩。
还有一个仅供内部使用(暴露) – jQuery._queueHooks()
。
还有另外两个钩子: nodeHook
和boolHook
,它们在内部使用,它们的function基本上嵌入到jQuery.attrHooks
和jQuery.valHooks
。
以下是重要的事项:
-
jQuery.attrHooks
- 在值重置IE6-9中的值后,在
radio
输入上设置类型。 - 在删除时将
contenteditable
设置为false( Bug#10429 )。 - 在空字符串上将宽度和高度设置为auto而不是0( Bug#8150 )
- 某些属性需要对IE进行特殊调用 –
href
,src
,width
和height
。 - 对于
style
属性的空字符串,返回undefined
。 - 修复旧IE中
value
属性的get / set - 如果没有定义钩子,则在读取属性值时,它使用
boolHook
或nodeHook
(与jQuery.valHooks.button
相同)。 - 在获取/设置元素的属性时可用于附加其他钩子。
- 在值重置IE6-9中的值后,在
-
jQuery.propHooks
-
href
/src
属性应该获得完整的规范化URL( Bug#10299 , Bug# 12915 )。 - 修复“Safari错误报告选项的默认选定属性”。
- 在获取/设置元素的属性时可用于附加其他钩子。
-
-
jQuery.Tween.propHooks
jQuery.Tween
用于动画等。- 修复了IE8中的
scrollTop
和scrollLeft
– 将在jQuery 2.0中删除。 - 其他动画的东西。
- 修复了IE8中的
-
jQuery.cssHooks
添加样式属性挂钩,以覆盖获取和设置样式属性的默认行为。
- 修复获取/设置CSS属性
opacity
的值。 - 修复获取
witdth
和height
取决于display
属性。 - 根据
box-sizing
属性修复设置width
和height
。 - 修复获得保证金的权利。
- 修复Webkit Bug#29084 – 当为top / left / bottom / right指定时,
getComputedStyle
返回百分比 - 在
jQuery.fn.animate
用于扩展指定的样式属性,如margin
,padding
和border
。 - 用于其他各种
jQuery.fn.animate
相关的东西。 - 设置各种后台CSS属性以
inherit
是在不使用jQuery.cssHooks
情况下实现的,因为它更短。 - 在获取/设置元素的单个样式属性时,可用于附加其他钩子。
- 修复获取/设置CSS属性
-
jQuery.valHooks
- 修复了
option
元素的Blackberry 4.7错误( Bug#6932 )。 - 用于读取所选元素的选定值。
- 修复了读取
button
元素的一些属性 –id
,name
和coords
。 与nodeHook
相同(见上文)。 - 修复了检查Webkit和其他人之间的
radio
和checkbox
输入的不兼容性。 - 在获取/设置input元素的值时可用于附加其他钩子。
- 修复了
-
jQuery.event.fixHooks
jQuery.event.mouseHooks
和jQuery.event.keyHooks
持有者,需要根据当前浏览器的支持进行修复和规范化。 -
jQuery.event.mouseHooks
- 用于将一些属性从原始
MouseEvent
传输到jQuery事件对象。 - 规范化
event.which
(使用哪个鼠标按钮)在浏览器中,因为event.button
没有规范化。 - 如果丢失则计算
pageX
,pageY
,clientX
,clientY
和其他,并将它们设置为jQuery事件对象。
- 用于将一些属性从原始
-
jQuery.event.keyHooks
- 用于将一些属性从原始
KeyboardEvent
传输到jQuery事件对象。 - 在浏览器中规范化
event.which
(按下的按钮的字符代码)。 在原始事件中,它可以是char
,charCode
,key
或keyCode
。
- 用于将一些属性从原始
来自jQuery 1.9.1源代码。