首页 >web前端 >html教程 >css样式除了用id选择器以外,可以唯一确定一个dom元素吗_html/css_WEB-ITnose

css样式除了用id选择器以外,可以唯一确定一个dom元素吗_html/css_WEB-ITnose

WBOY
WBOY原创
2016-06-24 12:15:251546浏览

正在做的功能,需要确定修改的目标,但是,并不是每一个dom元素都有id,所以卡在这里,在没有id的时候如何确定一个dom元素?


回复讨论(解决方案)

方法很多啊,根据条件来选择,如通过class属性,
比如遍历判断其他属性

楼主看看JQ的选择器用法就知道了,有很多形式。其实从本质上来讲,它的原理就象楼上说的是遍历元素并根据它的其它属性来进行判断,但比你自己写方便多了。

当然,也不建议仅仅是因为获取几个对象容易点就使用JQ。有空多看看它的功能,如果能让它在你的页面里发挥较多的作用,使用它的便利和代价之比就会更合适了。

我还忘说一点比较有用的了,就是通过和你要找的对象有关的其它容易找的对象来找你这个对象。呵呵,听来绕口,但其实很好理解,比如:


....
  
  • ...


假设你想找这里面的LI,没必要遍历所有的document内的元素对象,只要通过它的上级UL所在的上级DIV,因为它有ID名为theforever_csdn,找到它,再找它的UL子对象里的LI子对象就可以了。

这是通过父元素找子元素,类似的,还可以通过兄弟元素找兄弟元素,通过子元素找父元素。多看看DOM方法就行了。

我还忘说一点比较有用的了,就是通过和你要找的对象有关的其它容易找的对象来找你这个对象。呵呵,听来绕口,但其实很好理解,比如:


....
  
  • ...


假设你想找这里面的LI,没必要遍历所有的document内的元素对象,只要通过它的上级UL所在的上级DIV,因为它有ID名为thefore……
有人知道除了id,之外还能怎么唯一确定一个dom元素么?通过class和父级dom,都没办法。或者我没想到吧。

哎,郁闷呀,没办法唯一确定一个dom元素,通过class和上下级关系,都不能保证肯定是唯一的

哎,郁闷呀,没办法唯一确定一个dom元素,通过class和上下级关系,都不能保证肯定是唯一的

如果支持CSS3:
section:nth-child(1) {} /* 选择第一个 

 */
section:nth-child(2) {} /* 选择第二个 
 */
section:nth-child(N) {} /* 选择第N个 
 */
section:nth-last-child(1) {} /* 选择最后一个 
 */
section:nth-last-child(2) {} /* 选择倒数第二个 
 */
section:nth-last-child(N) {} /* 选择倒数第N个 
 */

第几个子元素都挨个定位得到,怎么就不能保证唯一了?这比用ID都更精准。因为ID其实是可以写同样的好几个的,当然,结果只会找到第一个,但如果你忘了前面写过,后面再写同样ID也不是不可能。

比较复杂,你是需要确定 dom元素 在dom文档树中的位置
而这个位置在 

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn