隐藏具有相同名称或类别的多个标记

时间:2011-05-17 10:48:16

标签: javascript prototypejs

我使用原型1.5。你能告诉我,我怎样才能隐藏/显示同名或类的div标签。

Element.hide('indicate')

但是,上面的行仅满足隐藏第一个元素。 “表示”是id。

4 个答案:

答案 0 :(得分:3)

正如所指出的,$$功能是必需的。它返回一个数组,因此您需要invoke隐藏所有项目。

$$('.indicate').invoke('hide');

或者,对于奖励炫耀点,您可以直接将该功能用作对象:

var hideFunc = Element.hide;
$$('.indicate').each(hideFunc);

这种技术的优势意味着您可以轻松地将该功能换成另一种功能,例如a Scriptaculous effect

hideFunc = Effect.SwitchOff;

答案 1 :(得分:2)

HTML中不支持两个元素的相同ID,因此Javascript中没有处理它的方法。无论你使用什么框架。

答案 2 :(得分:1)

Prototype提供了$$()函数,您可以使用它来查询任何CSS选择器。

因此,如果您有多个具有单个类的项目,则可以像这样查询它们:

$$('.indicate');

请参阅原型手册:http://www.prototypejs.org/api/utility/dollar-dollar

顺便说一下,既然你正在使用Prototype 1.5,我还可以提一下,它也为你提供了.getElementsByClassName()功能。但是,现在已经在最近的版本中弃用了它,因为它的功能已经由$$()覆盖,并且为了避免混淆,因为现代浏览器实现了具有相同名称但语法不同的本机函数。

所以不要使用它,但为了完整起见,这里是手动链接:http://www.prototypejs.org/api/element/getElementsByClassName

答案 3 :(得分:0)

ID必须是唯一的。请改为选择班级。

$$('div.indicate').hide();

或其名称属性

$$('div[name=indicate]').hide();