现在,如果我想要隐藏我执行的所有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_*
(或正则表达式)隐藏所有块?
答案 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);