sizzle分析记录:getAttribute和getAttributeNode

简介:

部分IE游览器下无法通过getAttribute取值?

<form name="aaron">  
  <input type="text" name="aaron"/>  
</form>
alert(form.getAttribute('name')); IE6、7中错误
alert(form.getAttributeNode('name').nodeValue);

看看jQ的解决方案

能力判断

support.attributes = assert(function( div ) {
    div.className = "i"; //设置一个属性
    return !div.getAttribute("className");
});

处理

复制代码
Sizzle.attr = function( elem, name ) {

    return val !== undefined ?
        val :
        support.attributes || !documentIsHTML ?
            elem.getAttribute( name ) :
            (val = elem.getAttributeNode(name)) && val.specified ?
                val.value :
                null;
};
复制代码

使用getAttributeNode得到属性节点,再通过nodeValue得到该属性节点的值

getAttributeNode的效率比getAttribute要低一些。如果要获取元素的id,node.id是最快的方法,node.getAttribute('id')其次,getAttributeNode('id').nodeValue最慢。


本文转自艾伦 Aaron博客园博客,原文链接:http://www.cnblogs.com/aaronjs/p/3837082.html,如需转载请自行联系原作者

相关文章
|
6月前
通过Function获取属性对应字段
通过Function获取属性对应字段
46 0
|
10月前
|
JavaScript 前端开发 索引
javascript中过滤二维对象数组重复的字段并只保留唯一值(array.filter与Array.from)
javascript中过滤二维对象数组重复的字段并只保留唯一值(array.filter与Array.from)
309 0
|
10月前
|
JSON JavaScript 数据格式
根据多种条件过滤对象的JSON数组
根据多种条件过滤对象的JSON数组
76 0
|
10月前
|
JavaScript 前端开发
javascript实现对象数据键值不同的Object.keys循环读取解决方案
javascript实现对象数据键值不同的Object.keys循环读取解决方案
59 0
javascript实现对象数据键值不同的Object.keys循环读取解决方案
|
JavaScript 前端开发
javascript数组对象根据id去重的四种方法
javascript数组对象根据id去重的四种方法
433 0
|
JavaScript
javascrip通过id获取标签案例
javascrip通过id获取标签案例
69 0
|
Python
Python编程:getattribute和getattr访问对象属性顺序
Python编程:getattribute和getattr访问对象属性顺序
112 0
|
JavaScript
jQuery find 和 filter 方法的区别
jQuery find 和 filter 方法的区别
jQuery find 和 filter 方法的区别