jQuery中提供了哪些钩子?

官方只有$.cssHooks记录在jQuery API文档中 ,并且$.valHooks在一个句子中被提及,用于解决.val()的已知问题。

我想知道除了这两个之外,jQuery中有多少个钩子,我们应该在插件开发中使用$.valHooks吗? 如果是这样,我认为它应该被记录为专门的主题而不是仅仅一句话。

有8种不同类型的外露钩。

还有一个仅供内部使用(暴露) – jQuery._queueHooks()

还有另外两个钩子: nodeHookboolHook ,它们在内部使用,它们的function基本上嵌入到jQuery.attrHooksjQuery.valHooks

以下是重要的事项:

  • jQuery.attrHooks

    • 在值重置IE6-9中的值后,在radio输入上设置类型。
    • 在删除时将contenteditable设置为false( Bug#10429 )。
    • 在空字符串上将宽度和高度设置为auto而不是0( Bug#8150 )
    • 某些属性需要对IE进行特殊调用 – hrefsrcwidthheight
    • 对于style属性的空字符串,返回undefined
    • 修复旧IE中value属性的get / set
    • 如果没有定义钩子,则在读取属性值时,它使用boolHooknodeHook (与jQuery.valHooks.button相同)。
    • 在获取/设置元素的属性时可用于附加其他钩子。
  • jQuery.propHooks

    • href / src属性应该获得完整的规范化URL( Bug#10299 , Bug# 12915 )。
    • 修复“Safari错误报告选项的默认选定属性”。
    • 在获取/设置元素的属性时可用于附加其他钩子。
  • jQuery.Tween.propHooks

    jQuery.Tween用于动画等。

    • 修复了IE8中的scrollTopscrollLeft – 将在jQuery 2.0中删除。
    • 其他动画的东西。
  • jQuery.cssHooks

    添加样式属性挂钩,以覆盖获取和设置样式属性的默认行为。

    • 修复获取/设置CSS属性opacity的值。
    • 修复获取witdthheight取决于display属性。
    • 根据box-sizing属性修复设置widthheight
    • 修复获得保证金的权利。
    • 修复Webkit Bug#29084 – 当为top / left / bottom / right指定时, getComputedStyle返回百分比
    • jQuery.fn.animate用于扩展指定的样式属性,如marginpaddingborder
    • 用于其他各种jQuery.fn.animate相关的东西。
    • 设置各种后台CSS属性以inherit是在不使用jQuery.cssHooks情况下实现的,因为它更短。
    • 在获取/设置元素的单个样式属性时,可用于附加其他钩子。
  • jQuery.valHooks

    • 修复了option元素的Blackberry 4.7错误( Bug#6932 )。
    • 用于读取所选元素的选定值。
    • 修复了读取button元素的一些属性 – idnamecoords 。 与nodeHook相同(见上文)。
    • 修复了检查Webkit和其他人之间的radiocheckbox输入的不兼容性。
    • 在获取/设置input元素的值时可用于附加其他钩子。
  • jQuery.event.fixHooks

    jQuery.event.mouseHooksjQuery.event.keyHooks持有者,需要根据当前浏览器的支持进行修复和规范化。

  • jQuery.event.mouseHooks

    • 用于将一些属性从原始MouseEvent传输到jQuery事件对象。
    • 规范化event.which (使用哪个鼠标按钮)在浏览器中,因为event.button没有规范化。
    • 如果丢失则计算pageXpageYclientXclientY和其他,并将它们设置为jQuery事件对象。
  • jQuery.event.keyHooks

    • 用于将一些属性从原始KeyboardEvent传输到jQuery事件对象。
    • 在浏览器中规范化event.which (按下的按钮的字符代码)。 在原始事件中,它可以是charcharCodekeykeyCode

来自jQuery 1.9.1源代码。