数码资讯
属性和道具属性的JS和优先选择的一个例子的区别
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
相比于属性,道具是新的测量,都是从中文意思理解,所有获取/设置属性的方法(属性)。唯一的。attr()用于在窗口或文档的方法不在jQuery1.6正常运行,因为在窗口和文档没有属性道具应运而生。
既然我们想知道它们之间的区别,我们最好看看它们的源代码。不要害怕代码的长度。我们只看关键词:
属性:功能(元素、名称、值、通){
VaR RET,钩,notxml,
N = elem.nodetype;
在非文本注释和属性节点上获取/设置属性
如果(元素形成的| | | |!= = = 3 = = = 8 = = = N {式| | 2)
返回;
}
如果(通过jquery.isfunction(jQuery。FN {姓名})){
收益(元){姓名} jQuery(价值);
}
当属性不支持时回退到支持
如果(typeof elem.getattribute =未定义){
返回jquery.prop(元素、名称、价值);
}
notxml = N!= = 1(元)| | jquery.isxmldoc;
属性小写
如果要定义一个钩子,则必须捕获必要的钩子
如果(notxml){
名称= name.tolowercase();
钩= jQuery。attrhooks {姓名} | |(rboolean.test(名字)boolhook:nodehook);
}
如果(值)!=未定义的){
如果(值= NULL){
JQuery.removeAttr(元素、名称);
返回;
}别人(钩设置如果钩notxml(ret = hooks.set(元素、价值、名称))!=未定义的){
返回页首;
{人}
elem.setattribute(名称,价值+ );
返回值;
}
}别人(如果钩notxml挂钩得到(ret = hooks.get(元素、名称))!= NULL){
返回页首;
{人}
ret = elem.getattribute(名称);
属性返回不存在的null,我们正常化为未定义
返回= null
未定义:
RET;
}
}
道具的方法代码(jQuery版本1.8.3)
道具:功能(元素、名称、值){
VaR RET,钩,notxml,
N = elem.nodetype;
在/非文本注释和属性节点上设置/设置属性
如果(元素形成的| | | |!= = = 3 = = = 8 = = = N {式| | 2)
返回;
}
notxml = N!= = 1(元)| | jquery.isxmldoc;
如果(notxml){
名称和附加挂钩
名称= jQuery。propfix {姓名} | |;
钩= jQuery。prophooks {姓名};
}
如果(值)!=未定义的){
如果设置(钩在钩(ret = hooks.set(元素、价值、名称))!=未定义的){
返回页首;
{人}
收益(元{名称} =价值);
}
{人}
如果(钩钩到(ret = hooks.get(元素、名称))!= NULL){
返回页首;
{人}
返回元素{名称};
}
}
}
在属性的方法,代码最关键的两个线,elem.setattribute(名称,价值+)和RET = elem.getattribute(名字),明显看到DOM API setAttribute和getAttribute方法属性的元素节点的操作。
在道具的方法,代码最关键的两个线,收益(元{姓名} =值)和返回元素{姓名},可以理解为document.getelementbyid(EL){姓名} =价值,这是转化为一个对象的属性。
既然这个原理被理解了,让我们来看一个例子:
$(函数(){())
EL = $(#测试);
console.log(el.attr(风格)); / /未定义
Console.log (el.prop (style)); //CSSStyleDeclaration object
console.log(document.getelementbyid(测试)。风格); / / cssstyledeclaration对象
});
El.attr(风格)的输出定义,因为属性是获取对象的属性节点的值。显然,此时没有这样的属性节点,自然输出未定义。
的el.prop(风格)的输出cssstyledeclaration对象,一个DOM对象,是土生土长的样式对象属性,所以样式对象的输出
作为document.getelementbyid(测试)。风格,这是作为一个以上相同
然后看看:
El.attr(ABC
console.log(el.attr(ABC)); / / 111
console.log(el.prop(ABC)); / /未定义
首先,使用attr方法添加ABC节点属性与价值111的对象,你可以看到,HTML的结构发生了变化。
对el.attr输出(ABC)是111,这是不正常的。
El.prop(ABC)输出定义,因为ABC是这个属性节点,因此它是不可以通过道具
El.prop(ABC
console.log(el.attr(ABC)); / / 111
Console.log (el.prop (ABC)); //222
我们使用道具方法将ABC属性设置为值为222的对象,我们可以看到HTML的结构没有改变,输出结果没有解释。
上述原则已经明确,当它被使用时,你可以掌握它。
更不用说,这显然是更好的使用道具的方法当你想获得或设置属性,如检查,选择只读,并禁用,如以下:
console.log(el.attr(检查)); / /检查
console.log(el.prop(检查)); / /真的
console.log(el.attr(禁用)); / /未定义
console.log(el.prop(禁用)); / /假
显然,布尔值比下一个处理的字符串值更合理。
PS,如果你有洁癖的JS性能,性能明显高于支柱,因为属性需要访问DOM的属性节点,DOM的访问是最time-consuming.this适用于许多选项来选择和取消。
我们都知道有些浏览器只写禁用、检查和其他被写为禁用禁用的浏览器。
JQ提供了新的方法,通过道具获得这些属性,这是解决这一问题。以前我们用属性查看属性,我们回到检查和。现在我们用道具法来获取属性,然后我们一起返回真与假。
因此,当使用attr(),当使用道具()
1。添加一个将生效的属性名,并使用道具();
2。是真的,还有假道具道具的两个属性吗;
三.其他使用attr();
当jQuery在项目中升级时,我们应该注意这一点!
以下是官方推荐attr()()、道具():
以下是官方推荐attr()()、道具():
既然我们想知道它们之间的区别,我们最好看看它们的源代码。不要害怕代码的长度。我们只看关键词:
属性:功能(元素、名称、值、通){
VaR RET,钩,notxml,
N = elem.nodetype;
在非文本注释和属性节点上获取/设置属性
如果(元素形成的| | | |!= = = 3 = = = 8 = = = N {式| | 2)
返回;
}
如果(通过jquery.isfunction(jQuery。FN {姓名})){
收益(元){姓名} jQuery(价值);
}
当属性不支持时回退到支持
如果(typeof elem.getattribute =未定义){
返回jquery.prop(元素、名称、价值);
}
notxml = N!= = 1(元)| | jquery.isxmldoc;
属性小写
如果要定义一个钩子,则必须捕获必要的钩子
如果(notxml){
名称= name.tolowercase();
钩= jQuery。attrhooks {姓名} | |(rboolean.test(名字)boolhook:nodehook);
}
如果(值)!=未定义的){
如果(值= NULL){
JQuery.removeAttr(元素、名称);
返回;
}别人(钩设置如果钩notxml(ret = hooks.set(元素、价值、名称))!=未定义的){
返回页首;
{人}
elem.setattribute(名称,价值+ );
返回值;
}
}别人(如果钩notxml挂钩得到(ret = hooks.get(元素、名称))!= NULL){
返回页首;
{人}
ret = elem.getattribute(名称);
属性返回不存在的null,我们正常化为未定义
返回= null
未定义:
RET;
}
}
道具的方法代码(jQuery版本1.8.3)
道具:功能(元素、名称、值){
VaR RET,钩,notxml,
N = elem.nodetype;
在/非文本注释和属性节点上设置/设置属性
如果(元素形成的| | | |!= = = 3 = = = 8 = = = N {式| | 2)
返回;
}
notxml = N!= = 1(元)| | jquery.isxmldoc;
如果(notxml){
名称和附加挂钩
名称= jQuery。propfix {姓名} | |;
钩= jQuery。prophooks {姓名};
}
如果(值)!=未定义的){
如果设置(钩在钩(ret = hooks.set(元素、价值、名称))!=未定义的){
返回页首;
{人}
收益(元{名称} =价值);
}
{人}
如果(钩钩到(ret = hooks.get(元素、名称))!= NULL){
返回页首;
{人}
返回元素{名称};
}
}
}
在属性的方法,代码最关键的两个线,elem.setattribute(名称,价值+)和RET = elem.getattribute(名字),明显看到DOM API setAttribute和getAttribute方法属性的元素节点的操作。
在道具的方法,代码最关键的两个线,收益(元{姓名} =值)和返回元素{姓名},可以理解为document.getelementbyid(EL){姓名} =价值,这是转化为一个对象的属性。
既然这个原理被理解了,让我们来看一个例子:
$(函数(){())
EL = $(#测试);
console.log(el.attr(风格)); / /未定义
Console.log (el.prop (style)); //CSSStyleDeclaration object
console.log(document.getelementbyid(测试)。风格); / / cssstyledeclaration对象
});
El.attr(风格)的输出定义,因为属性是获取对象的属性节点的值。显然,此时没有这样的属性节点,自然输出未定义。
的el.prop(风格)的输出cssstyledeclaration对象,一个DOM对象,是土生土长的样式对象属性,所以样式对象的输出
作为document.getelementbyid(测试)。风格,这是作为一个以上相同
然后看看:
El.attr(ABC
console.log(el.attr(ABC)); / / 111
console.log(el.prop(ABC)); / /未定义
首先,使用attr方法添加ABC节点属性与价值111的对象,你可以看到,HTML的结构发生了变化。
对el.attr输出(ABC)是111,这是不正常的。
El.prop(ABC)输出定义,因为ABC是这个属性节点,因此它是不可以通过道具
El.prop(ABC
console.log(el.attr(ABC)); / / 111
Console.log (el.prop (ABC)); //222
我们使用道具方法将ABC属性设置为值为222的对象,我们可以看到HTML的结构没有改变,输出结果没有解释。
上述原则已经明确,当它被使用时,你可以掌握它。
更不用说,这显然是更好的使用道具的方法当你想获得或设置属性,如检查,选择只读,并禁用,如以下:
console.log(el.attr(检查)); / /检查
console.log(el.prop(检查)); / /真的
console.log(el.attr(禁用)); / /未定义
console.log(el.prop(禁用)); / /假
显然,布尔值比下一个处理的字符串值更合理。
PS,如果你有洁癖的JS性能,性能明显高于支柱,因为属性需要访问DOM的属性节点,DOM的访问是最time-consuming.this适用于许多选项来选择和取消。
我们都知道有些浏览器只写禁用、检查和其他被写为禁用禁用的浏览器。
JQ提供了新的方法,通过道具获得这些属性,这是解决这一问题。以前我们用属性查看属性,我们回到检查和。现在我们用道具法来获取属性,然后我们一起返回真与假。
因此,当使用attr(),当使用道具()
1。添加一个将生效的属性名,并使用道具();
2。是真的,还有假道具道具的两个属性吗;
三.其他使用attr();
当jQuery在项目中升级时,我们应该注意这一点!
以下是官方推荐attr()()、道具():
以下是官方推荐attr()()、道具():
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。