jQuery中提供了哪些钩子?

时间:2013-03-19 08:20:58

标签: jquery dom javascript-events dom-events

jQuery API documentation中仅记录了$.cssHooks的正式文件,并在.val()中针对已知问题的变通方法在句子中提及了$.valHooks

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

1 个答案:

答案 0 :(得分:10)

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

还有一个仅供内部使用(已曝光) - jQuery._queueHooks()

还有另外两个钩子:nodeHookboolHook在内部使用,其功能基本上嵌入jQuery.attrHooksjQuery.valHooks

以下是重要的内容:

  • <强> jQuery.attrHooks

    • 在值重置IE6-9中的值后,在radio输入上设置类型。
    • 在删除时将contenteditable设置为false(Bug #10429)。
    • 在空字符串(Bug #8150
    • 上将宽度和高度设置为auto而不是0
    • Some attributes require a special call on IE - hrefsrcwidthheight
    • 如果undefined属性为空字符串,则返回style
    • 修复旧IE中value属性的获取/设置
    • 如果未定义挂钩,则在读取属性值时,会使用boolHooknodeHook(与jQuery.valHooks.button相同)。
    • 可在获取/设置元素属性时用于附加其他挂钩。

  • <强> jQuery.propHooks

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

  • <强> jQuery.Tween.propHooks

    jQuery.Tween用于制作动画等。

    • 在IE8中修复scrollTopscrollLeft - 将在jQuery 2.0中删除。
    • 其他动画片。

  • <强> jQuery.cssHooks

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

    • 修复获取/设置CSS属性opacity的值。
    • 根据witdth属性修复获取heightdisplay
    • 根据width属性修复设置heightbox-sizing
    • 修复获得保证金的权利。
    • Webkit Bug #29084的修复 - getComputedStyle在为top / left / bottom / right指定时返回百分比
    • jQuery.fn.animate中用于展开指定的样式属性,例如marginpaddingborder
    • 用于其他各种jQuery.fn.animate相关内容。
    • 在不使用inherit的情况下,将各种背景CSS属性设置为jQuery.cssHooks,因为它更短。
    • 在获取/设置元素的单个样式属性时可用于附加其他钩子。

  • <强> jQuery.valHooks

    • 修复了option元素(Bug #6932)的黑莓4.7错误。
    • 用于读取select元素的选定值。
    • 修正了button元素的一些属性 - idnamecoords。与nodeHook相同(见上文)。
    • 修复了检查Webkit与其他人之间的radiocheckbox输入的不兼容性。
    • 在获取/设置输入元素的值时可用于附加其他挂钩。

  • <强> 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源代码。