最近在项目中用到了jquery(俺的第一次%%%)
感觉其选取器功能真的灰常强大~~~~~~~~
-----
我在项目中碰到这样一个需求:
假如有如下这样几个input type="text":
假如我要获取不包括validateGroup属性的元素该怎么写选取器呢?
我写了如下的选择器:
经测试,的确只能获取到那个没validateGroup属性的元素。
按说这样万事大吉了。
可,不幸的是,最近流行“闲得蛋疼”,我也追赶潮流了一把:
我给id="validate1"的元素加上了validateGroup=""的属性,也就是加上了空值的validateGroup:
这个时候,我再使用同样的选取器。
结果: 还是获取到了之前一样的元素,按道理来说,我那样的写法是获取不存在validateGroup属性的元素啊?
可这个元素是有属性,只不过赋了空值了呀???
对自定义属性是这样,对原生属性呢?
这一次我更改 id="validate2"的元素,将它的id干成了空值:
这时,我再用选取器:
经过测试,获取到的的确是第二个元素。。
至此,我得出一个我自己都不敢确定的结论:
使用:not来选取时,无论原生属性还是自定义属性,只要没写属性,或属性值为空,都会被看着成这个属性不存在 ?
---
蛋仍在疼,人仍在闲:
我测试了一下普通属性选取:
HTML是:
选取器是:
获取到的是第一个元素,也就是说:这个时候跟:not不一样了,对原生属性来说,只要你写了,不管是否空值,它都会认为是存在的。
那自定义属性呢?把html改成:
选取器是:
结果是::::获取到第2个元素!!!也就是说,第一个元素的属性存在,但是值为空的话,选取器就不要它了!!!
当然,如果在选取器中指定了属性值,如[validateGroup='']的话,就可以获取到了。
-----------------------
看起来:not[att] 和[att]其实是一样的:
在判断自定义属性是否存在时,即只用:not[att]或[att]时,只要没写该属性或该属性值为空,都会被视为不存在。
在这一点上,对原生属性而言,只有[att]有点不同:此时,即使是空值,它也会找到。。
其它的就没啥区别了。。
以上只是我的乱写乱弹----还希望高手能指点迷津!!!!