首页 新闻 会员 周边

请问jQuery中csshook跟css方法有什么区别?

0
悬赏园豆:5 [已关闭问题] 关闭于 2012-08-20 11:16

请问jQuery中csshook跟css方法有什么区别?

csshook api的定义如下,有朋友能帮忙翻译一下吗:

Hook directly into jQuery to override how particular CSS properties are retrieved or set, normalize CSS property naming, or create custom properties.

地址:http://api.jquery.com/jQuery.cssHooks/

草根程序猿的主页 草根程序猿 | 初学一级 | 园豆:129
提问于:2012-07-02 21:17
< >
分享
所有回答(2)
-1

hook就是勾子,WIN 32 API编程里常用的手段(在DOS时代也有,即中断拦截,意思与功能类似)。

csshook和css方法的区别是:

csshook是追加css类,而css是设置。

 

比如:

<div class="a"></div>

对这个对象使用css("b"),结果是:

<div class="b"></div>

而对这个对象使用csshook("b"),结果是:

<div class="a b"></div>

 

那么class="a b"有什么特点呢?

 

假设css中的定义:

.a

{

font-size:12px;

color:red;

}

 

.b

{

font-family:楷体;

color:blue;

}

 

class="a b"的结果就等同于设置了下面的样式:

{

font-size:12px;

color:red;

font-family:楷体;

color:blue;

}

两个color的设置有冲突,浏览器会进行过滤处理,以最后一次的结果为准,即:

{

font-size:12px;

font-family:楷体;

color:blue;

}

多浏览器样式兼容使用的就是类似的冲突解决方案,即所谓的csshack技术(CSS黑客,确实有点黑客的味道)。

无之无 | 园豆:5095 (大侠五级) | 2012-07-03 08:46

比如:

<div class="a"></div>

对这个对象使用css("b"),结果是:

<div class="b"></div>

而对这个对象使用csshook("b"),结果是:

<div class="a b"></div>

这里说的有问题,没有css("b")这种用法,设置样式要用.attr("class","b");追加样式用addClass("b"),另外csshook好像不是这么用的

支持(0) 反对(0) artwl | 园豆:16736 (专家六级) | 2012-07-03 09:42

@artwl: 我对jquery并不熟悉,只是凭个人主观臆测的。从hook的字意以及那段英文的大致意思分析的。

至于css方法,不过是举个例子,没去查阅是否有这个方法。

支持(0) 反对(0) 无之无 | 园豆:5095 (大侠五级) | 2012-07-03 09:46
0

     挂钩实际上是jQuery命名空间中的数组,比如$.cssHooks、$.attrHooks。一
般来说,挂钩是保存着get和set方法的对象,前者用于取得请求的值,后者的作用则是提供新值。

     以下是其他几种挂钩:

挂钩类型            修改的方法         示例用法
$.attrHooks      .attr()               阻止元素的type属性被修改
$.cssHooks       .css()               对Internet Explorer中的opacity进行特殊处理
$.propHooks     .prop()             纠正Safari中selected属性的行为
$.valHooks        .val()               支持单选按钮和复选框跨浏览器报告一致的值

     通常,这些挂钩所做的工作对我们而言是完全不可见的,我们不必知道它们都做了什么就可
以利用它们提供的便利。

迢迢 | 园豆:202 (菜鸟二级) | 2016-01-04 10:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册