群里的abcd提出的问题,选择器如何区分这两个东西。说实话,我对此非常迷惑,于是看了几个选择器的实现,总结如下:

[class]要求目标节点显式地设置了class。

[class=""]不但要求目标节点显式地设置class,还要求其值为空字符串。

那剩下的问题是如何得知此属性是被显式地设置了。这简单,这东西我老早就在《tabIndex属性》一文研究过:


var _hasAttr = function(node, name){var attr = node.getAttributeNode && node.getAttributeNode(name);return attr && attr.specified; // Boolean
};

但对于一个选择器来说,过来的函数调用是非常不明显,我们需要努力寻求一些更简捷的替换品。hasAttribute不错,可惜IE6,IE7不支持。我们转向jQuery源码吧,毕竟拥有这些人为它添加砖加瓦。

由于它是属于属性选择器的范畴,因此它与[name=check],[name!=check],[name~=check]等一齐处理。jQuery会把它进行切割,如[name=check]会变成["name","name","=","check"],[name!=check]会变成["name","name","!=","check"],[name]会变成["name","name",,],亦即有两个元素是undefined。第四个值会代入一个叫check的变量,并且再与""相加代入另一个叫value的变量。在那个长长的三目运算符中,它有一个分支专门用于处理像[class]这种是否显示地设置了属性但不管其值是多少的情况:


!check ?  value && result !== false ://当check为undefined,即进入此分支,result为真实属性值

最新文章

  1. Python-Requests.post方法中,传参data与json的区别
  2. (Mybaitis)分页
  3. 一个多功能蓝色漂亮的搜索条
  4. mitmproxy可谓神器乎?
  5. 金店管理系统的几个经验和教训
  6. koreader下载_Koreader阅读器app免费安装最新版|Koreader阅读器2018手机最新版下载_v1.0_9ht安卓下载...
  7. 图像纹理特征总体简述
  8. hodj 1008 Elevator (模拟题)
  9. r语言爬虫和python爬虫哪个好-R语言爬虫常用方法总结(以案例说明)
  10. html鼠标移除事件监听,Javascript:DOM事件(监听鼠标点击/释放,鼠标悬停/离开等)...
  11. MSP430F149实现超声波测距并通过串口和PC机通信进行显示
  12. 针对Windows10下EPLAN2.7频繁重启的解决办法
  13. 如何用墨刀画出iPhone灵动岛?
  14. 计算机学校校歌,【2018十大最受欢迎高校校歌】_最受欢迎的十大高校校歌
  15. 如何重键盘输入“勾”“打勾””√“这个符号
  16. 基于灰色模型的端口短信预测和垃圾短信治理研究
  17. java如何继承两个类?以及讨论一下多继承的利弊。
  18. 同源策略、跨域以及跨域的三种解决方案详解
  19. oracle如何查看已创建的序列?
  20. 日媒感慨中国手机发展,超乎日本人想象!

热门文章

  1. 那些值得学习的精美邮件模板案例
  2. fun在matlab里面啥意思_下面是个MATLAB程序,请问fun,和feval,是什么,如何写fun,如何代表这个函数...
  3. APP产品的数据分析体系
  4. qpushbutton 设置字体大小_QT设置QPushButton的Text字体颜色 | 学步园
  5. C语言编辑个人信息,十万火急:用c语言打印个人信息,怎么着?
  6. JavaMail实现简单邮箱验证——163邮箱
  7. mc服务器常用指令_mc服务器常用指令
  8. MySQL 常用/见函数
  9. 老板与管理者的区别(zt)
  10. 图书信息管理系统Java