this.id
(如你所知)
this.value
(在大多数输入类型上。我知道的唯一问题是当 a的元素上<select>
没有value
设置属性时的 IE <option>
,或 Safari 中的无线电输入。)
this.className
获取或设置整个“类”属性
this.selectedIndex
针对 a<select>
获取所选索引
this.options
针对 a<select>
获取<option>
元素列表
this.text
针对 an<option>
获取其文本内容
this.rows
针对 a<table>
获取<tr>
元素集合
this.cells
针对 a<tr>
获取其单元格(td & th)
this.parentNode
得到一个直接的父母
this.checked
获得感谢@Tim Down的检查状态checkbox
this.selected
获得感谢@Tim Down的选定状态option
this.disabled
获得感谢@Tim Down的禁用状态input
this.readOnly
获得感谢@Tim Down的只读状态input
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();
但是如果有很多,你可能想要做一点原生 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]);
. 这是一个非常漂亮的功能,我们在使用 Array(或类似 Array 的对象)时会忽略它。