javascript - 通过 .each() 选择 Jquery/Javascript div 会给出 HTMLDivElement 对象而不是 Object 对象。隐藏 div 对象的解决方法是什么?

标签 javascript javascript-objects jquery

我有 5 个 div 元素,其属性为 data-role="content"

我选择了所有的

a = $('div[data-role=content]')

它返回[object HTMLDivElement]

为了隐藏所有 div 元素,我迭代 a 并隐藏每个元素

<script>
$.each(a, function(index, value) {
    if (value) {
        alert(typeof(value));
        value.hide();
    }
})
</script>​

但它返回一个错误......

TypeError: Result of expression 'a.hide' [undefined] is not a function

另一方面,如果我选择一个带有 id 的 div:

a = $('div[id=content1]')

它给了我一个:

 [object Object]

隐藏函数a.hide()在这种情况下有效。

问题是:“如何一次选择所有 [object Object] 元素?”或者, “如何将 [object HTMLDivElement] 转换为 [object Object]?”

最佳答案

真的只是在寻找这个:

var a = $('div[data-role=content]');
a.hide();

您不需要显式迭代 jQuery 对象中的每个元素,因为 .hide()我们会为您解决这个问题。

<小时/>

注意 $.each()用于迭代任何类似数组的对象。但是,当您已经在使用 jQuery 对象时,请使用 .each()而不是 $.each()

此外,您似乎正在使用属性选择器按 ID 选择元素。这是一种愚蠢的选择元素的方法,因为有一种更简单的方法 - 并且可能快得多 - ID selector 。这是交换:

$('div[id=content1]') // Change this
$('div#content1')     // to this

不过,您还可以做得更好,因为元素 ID 必须是唯一的,这意味着指定 ID 和标记名称不一定是特定的。所以,

$('div#content1') // Change this
$('#content1')    // to this
<小时/>

好吧,所以我忍不住跟进整个 ID 选择器位,以证明单独的 ID 选择器有多快。在我的测试中:一个数量级。 http://jsperf.com/jq-id-selectors

关于javascript - 通过 .each() 选择 Jquery/Javascript div 会给出 HTMLDivElement 对象而不是 Object 对象。隐藏 div 对象的解决方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7211251/

相关文章:

javascript - 代码可以与警报一起使用,但不能在没有警报的情况下使用

javascript - AngularJS 和选择

javascript - 访问对象内部的属性

javascript - localStorage 值可以是对象还是数组?

jquery - 转换 5 星级脚本以使用 jQuery v1.3.2 时出现问题

jquery - jQuery 的 ondragstart 事件

jquery - 使用 browserify 时找不到模块 'jquery'

javascript - 如何添加下一个上一个按钮以更改 javascript 中的选项卡内容?

javascript - 通过另一个对象上的字符串值为 javascript 对象属性分配一个值

javascript - 如何记录仅具有原始值的对象?