this.id
(如您所知)
this.value
(对于大多数输入类型而言没有问题。我只知道在IE中,如果一个<select>
没有在其<option>
元素上设置value
属性,或者在Safari浏览器中使用单选按钮,则会出现问题。)
this.className
可以获得或设置整个“class”属性
this.selectedIndex
用于获取所选索引的<select>
this.options
用于获取<select>
中的<option>
元素列表
this.text
用于获取<option>
的文本内容
this.rows
用于获取<table>
的<tr>
元素集合
this.cells
用于获取<tr>
的单元格(td和th)
this.parentNode
用于获取直接父级
this.checked
用于获取checkbox
的选中状态 感谢@Tim Down
this.selected
用于获取option
的选中状态 感谢@Tim Down
this.disabled
用于获取input
的禁用状态 感谢@Tim Down
this.readOnly
用于获取input
的readOnly状态 感谢@Tim Down
this.href
对于一个<a>
元素,用于获取其href
this.hostname
对于一个<a>
元素,用于获取其href
的域名
this.pathname
对于一个<a>
元素,用于获取其href
的路径
this.search
对于一个<a>
元素,用于获取其href
的查询字符串
this.src
对于一个可以有src
的元素
......我想你已经明白了。
有时候性能非常关键。比如说如果您要在循环中多次执行某些操作,您可能需要放弃jQuery。
一般情况下,您可以将:
$(el).attr('someName');
上面的表述不太清晰。 getAttribute
不是一种替代方法,但它可以检索从服务器发送的属性值,并且相应的 setAttribute
将其设置。在某些情况下是必需的。
下面的句子已经涉及到这个问题了。 看看这个答案,更好地解释了这个问题。
el.getAttribute('someName');
为了直接访问属性,可以使用点语法。请注意,属性与属性(有时相互映射)不同。当然也有 setAttribute
方法。
假设您收到一个需要解包特定类型的所有标签的页面。使用 jQuery 很简单:
$('span').unwrap(); // unwrap all span elements
但如果有很多的话,您可能想使用一些本地 DOM API:
var spans = document.getElementsByTagName('span');
while( spans[0] ) {
var parent = spans[0].parentNode;
while( spans[0].firstChild ) {
parent.insertBefore( spans[0].firstChild, spans[0]);
}
parent.removeChild( spans[0] );
}
这段代码非常短,比jQuery版本的性能更好,并且可以轻松地制作成一个可重复使用的函数放入个人库中。
外部的while
语句看起来可能会产生无限循环,因为它使用了while(spans[0])
,但是由于我们处理的是“实时列表”,当我们执行parent.removeChild(span[0]);
时,它会得到更新。这是一个很棒的功能,在使用类似数组的对象时却无法享受到。
this.id
的其他非jQuery跨浏览器兼容技术? - user113716