通过id隐藏块

时间:2011-05-18 08:02:24

标签: javascript prototypejs

现在,如果我想要隐藏我执行的所有account

Element.hide('account_1_info')
Element.hide('account_1_friends')
Element.hide('account_1_contacts')
Element.hide('account_2_info')
Element.hide('account_2_friends')
Element.hide('account_2_contacts')
etc...

是否可以通过ID掩码account_*(或正则表达式)隐藏所有块?

4 个答案:

答案 0 :(得分:2)

在prototypejs和CSS-selectors中使用double-dollar:

$$('*[id^="account_"]')

从版本1.7开始,prototypejs使用sizzle,与jquery使用的选择器相同,因此您可以使用jquery-documentation来了解选择器。 http://api.jquery.com/category/selectors/

答案 1 :(得分:2)

如果您能够修改html,可以通过使用标记中的类来简化生活。

而不是(例如):

<div id="account_1_info"></div>
<div id="account_1_friends"></div>
<div id="account_1_contacts"></div>

<div id="account_2_info"></div>
<div id="account_2_friends"></div>
<div id="account_2_contacts"></div>

将信息块包装在容器中

<div class="account" id="account_1">
    <div class="info"></div>
    <div class="friends"></div>
    <div class="contacts"></div>
</div>
<div class="account" id="account_2">
    <div class="info"></div>
    <div class="friends"></div>
    <div class="contacts"></div>
</div>

然后,您可以定位帐户,帐户中的信息块或所有帐户的信息块。

答案 2 :(得分:1)

您可以在jQuery中使用attribute starts with selector

$('[id^="account_"]').hide();

如果你还没有在你的网站中包含jQuery,那就永远不会太晚了:)

在原型中使用jQuery可能会遇到一些问题,read about it here

答案 3 :(得分:0)

我认为原型不可能。如果传递了字符串,Element.hide使用$ method查找元素,$给出了与给定字符串完全匹配的id的元素。

如果你想减少代码行,可以将所有id保存在数组中,并可以将它们隐藏为

['id1', 'id2', 'id3'].each(Element.hide);