用括号[]选择jquery元素

时间:2012-07-19 18:31:17

标签: jquery

为什么这不起作用

$('div.note')[0].removeClass('hidden');

我从firebug收到此错误:

TypeError: note.removeClass is not a function

3 个答案:

答案 0 :(得分:8)

$('div.note')[0]为您提供了一个javascript对象,而不是一个jQuery对象,而removeClass是一个jQuery方法。在使用jQuery方法之前,需要将其转换为jQuery对象。

试试这个,

$($('div.note')[0]).removeClass('hidden');

$('div.note').eq(0).removeClass('hidden');

答案 1 :(得分:3)

如果您对括号的使用不严格,使用.eq()会更加精简。

$('div.note').eq(0).removeClass('hidden');

答案 2 :(得分:1)

非常基本上,将每个jQuery调用视为给出一个如下所示的对象:

var myPosts = $(".posts");

// To help make sense of it, myPosts looks something like this.
myPosts === {
   elements : [ /* all of your returned elements */ ]
   helpfulMethod : function () { for (element in elements) { /* .... */ } },
   otherHelpfulMethod : function () { for (element in elements) { /*...*/ } }
}

如果你说:

var element = myPosts.elements[0];
element.otherHelpfulMethod();

它会向你吐出错误。

添加.element的方法是在事后调用数组为“this”。

你也可以这样做:

for (i in arr; ....) {
    this[i] = arr[i];
}

并获得相同的效果。

因此调用myPosts [0]只会获取HTML元素。 然后你需要将它包装在jQuery对象中以使用帮助器方法,或者你需要使用jQuery辅助函数来访问该特定元素。