为什么这不起作用
$('div.note')[0].removeClass('hidden');
我从firebug收到此错误:
TypeError: note.removeClass is not a function
答案 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辅助函数来访问该特定元素。