• JQuery 属性选取器一点有意思的地方


    最近在项目中用到了jquery(俺的第一次%%%)

    感觉其选取器功能真的灰常强大~~~~~~~~

    -----

    我在项目中碰到这样一个需求:

    假如有如下这样几个input type="text":

    Code

    假如我要获取不包括validateGroup属性的元素该怎么写选取器呢?

    我写了如下的选择器:

    'input[type=\'text\']:not([validateGroup])'

    经测试,的确只能获取到那个没validateGroup属性的元素。

    按说这样万事大吉了。

     可,不幸的是,最近流行“闲得蛋疼”,我也追赶潮流了一把:

    我给id="validate1"的元素加上了validateGroup=""的属性,也就是加上了空值的validateGroup:

      text with validate group property:<input type="text" id="validate1" name="validate1" validateGroup="" />

    这个时候,我再使用同样的选取器。

    结果:  还是获取到了之前一样的元素,按道理来说,我那样的写法是获取不存在validateGroup属性的元素啊?

    可这个元素是有属性,只不过赋了空值了呀???

    对自定义属性是这样,对原生属性呢?  

    这一次我更改 id="validate2"的元素,将它的id干成了空值:

    <input type="text" id="" name="validate2" validateGroup="b" />

    这时,我再用选取器:

    'input[type=\'text\']:not([id])'

    经过测试,获取到的的确是第二个元素。。

    至此,我得出一个我自己都不敢确定的结论:

    使用:not来选取时,无论原生属性还是自定义属性,只要没写属性,或属性值为空,都会被看着成这个属性不存在 ?

    ---

    蛋仍在疼,人仍在闲:
    我测试了一下普通属性选取:
    HTML是:

    Code

    选取器是:

    'input[type=\'text\'][id]'

    获取到的是第一个元素,也就是说:这个时候跟:not不一样了,对原生属性来说,只要你写了,不管是否空值,它都会认为是存在的。

    那自定义属性呢?把html改成:

    Code

    选取器是:
    'input[type=\'text\'][validateGroup]'

    结果是::::获取到第2个元素!!!也就是说,第一个元素的属性存在,但是值为空的话,选取器就不要它了!!!

    当然,如果在选取器中指定了属性值,如[validateGroup='']的话,就可以获取到了。

    -----------------------

    看起来:not[att] 和[att]其实是一样的:
    在判断自定义属性是否存在时,即只用:not[att]或[att]时,只要没写该属性或该属性值为空,都会被视为不存在。

    在这一点上,对原生属性而言,只有[att]有点不同:此时,即使是空值,它也会找到。。

    其它的就没啥区别了。。

    以上只是我的乱写乱弹----还希望高手能指点迷津!!!!

  • 相关阅读:
    复杂json对应的实体类定义
    Hbase 根据rowkey批量读写
    Spark 分组聚合转Map 的方式
    idea本地连接访问hadoop集群的方法
    新版supperset连接druid数据源设置
    使用jdbc java 连接 sqlserver 2008数据库 需要注意的事项
    关于CrystalQuartz设置Cron匹配的时区问题~
    VS2010连接远程TFS2012项目问题
    关于ASP.NET SignalR的Group使用
    关于CodeFrist下EntityFramework5.0及其最新版本中枚举的使用
  • 原文地址:https://www.cnblogs.com/McJeremy/p/1603294.html
Copyright © 2020-2023  润新知