javascript uuid技术

这主要用于选择器过滤重复元素时用的。

涉及三种可能的手段:sourceIndex,uniqueID与自定义的uuid。

sourceIndex 获取元素节点在页面的出现顺序,即为其在document.all集合中的索引号。由于要准确获取先后位置,如果在其前面插入一个元素节点,那么它的位置就要加一。换言之,它是动态分配的,每次都要重复计算。注意,IE only,只读。

uniqueID 也是一个IE only的只读属性。这个属性也不是早早就固化在元素节点中,只在我们第一次访问它时才开始为整个页面分配uniqueID。这意味着,如果我们用它来做选择器的过滤,第一次可能会很慢。另,document对象也具有这个属性,不过它和其它HTML的uniqueID属性的意义是完全不同的。当我们每调用一次document.uniqueID,系统就会返回一个新的uniqueID值。

 
  window.onload = function(){
        alert(document.uniqueID)//注意:IE only
        alert(document.uniqueID)
        alert(document.uniqueID)
    }
<!doctype html> <html lang="en"> <head> <meta charset="utf-8" /> <meta content="IE=8" http-equiv="X-UA-Compatible"/> <title>uuid by 司徒正美 </title> <script type="text/javascript"> window.onload = function(){ alert(document.uniqueID) alert(document.uniqueID) alert(document.uniqueID) } </script> </head> <body> </body> </html>

运行代码

这两个东西都是IE ony,而且只能用于HTMLDocument,因此我们注定要自行设计一个通行的方案。看jQuery是怎样实现的:

 
        var expando = "jQuery" + now(), uuid = 0,
        //*****************略*******************
        var id = elem[ expando ]

不过在IE下,有些元素在添加自定义属性时会出错,如object,applet,embed。这比较作孽。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值