CSS 的属性选择器是很有用的,它能有效的减少类的使用,但众所周知,IE6 是不支持 CSS 属性选择器的,为了兼容 IE6 ,一般的做法还是给需要的元素额外加类。如果是静态页面,那还好处理,直接在需要的元素上加上类,但如果是动态内容或其他因素影响,不能确定要在哪个元素上加类,那就比较棘手了。这个时候用 js 来处理应该是比较好的,方法也许您也想到了,就是:获取元素属性的值,然后判断值是否包含指定的字符串,如果包含就加上类。
做一个列子吧,就拿最近做的一个东西来做吧,是一个列表,如果这个列表中的某个连接是直接打开 pdf 文件,就给这个链接后面加上 pdf 的小图标,以示提醒作用。看代码吧,XHTML 和 CSS 代码就省略了,看主要的 JS 代码:
window.onload = function(){ var list = document.getElementById('list'); var listA = list.getElementsByTagName('a'); for(var i = 0; i < listA.length; i++){ var href = listA[i].href; if(href.indexOf('pdf') != -1){ listA[i].className = 'haspdf'; } } }
因为这段代码主要针对 IE6 及以下版本,所以可以加上 IE 条件注释。
Original article: 用js模拟css属性选择器
©2015 一起CSS. All Rights Reserved.