Gau*_*wal 0 javascript jquery javascript-objects
我有5个div带属性的元素data-role="content"
我选择所有这些
a = $('div[data-role=content]')
Run Code Online (Sandbox Code Playgroud)
它回来了[object HTMLDivElement].
为了隐藏所有div元素,我迭代a并隐藏每个元素
<script>
$.each(a, function(index, value) {
if (value) {
alert(typeof(value));
value.hide();
}
})
</script>?
Run Code Online (Sandbox Code Playgroud)
但它返回错误....
TypeError: Result of expression 'a.hide' [undefined] is not a function
Run Code Online (Sandbox Code Playgroud)
另一方面,如果我选择一个id为div的div:
a = $('div[id=content1]')
Run Code Online (Sandbox Code Playgroud)
它给了我一个:
[object Object]
Run Code Online (Sandbox Code Playgroud)
隐藏功能a.hide()适用于该情况.
问题是:"如何[object Object]一次选择所有元素?" 或者,"我怎样才能转换[object HTMLDivElement]成[object Object]?"
你真的只是在寻找这个:
var a = $('div[data-role=content]');
a.hide();
Run Code Online (Sandbox Code Playgroud)
您不需要显式迭代jQuery对象中的每个元素,因为它.hide()会为您处理.
NB $.each()用于迭代任何类似数组的对象.但是,当您已经在使用jQuery对象时,请使用.each()而不是$.each().
此外,您似乎正在使用属性选择器按ID选择元素.这是选择元素一个愚蠢的办法,因为有一个更简单-可能多快- ID选择.这是交换:
$('div[id=content1]') // Change this
$('div#content1') // to this
Run Code Online (Sandbox Code Playgroud)
但是,您可以做得更好,因为元素ID必须是唯一的,这意味着指定ID 和标记名称是不必要的.所以,
$('div#content1') // Change this
$('#content1') // to this
Run Code Online (Sandbox Code Playgroud)
好的,所以我无法抗拒跟进整个ID选择器位来证明独奏ID选择器的速度有多快.在我的测试中:一个数量级. http://jsperf.com/jq-id-selectors
| 归档时间: |
|
| 查看次数: |
7304 次 |
| 最近记录: |