您应该在表单上创建一个事件处理程序来管理所有的单击。你应该做一个选择,因为你只关心
<input>
name == details
.
然后你可以把所有的div都藏在
<form>
从指定的id开始,只显示具有
clicked element's id
+
_div
结束。
最后,您可以从标记中移除事件处理程序。
见a
working demo
var form = $("FORM_ID");
form.observe( 'click', function(event) {
var el = event.element();
if ( el.name == "details" ) {
// select: #FORM_ID div#details_*
idStartsWith("details_", "div", form).invoke("hide");
$(el.id + "_div").show();
}
});
/**
* Selecting elements by how their id starts
*
* @param text - starting of the id
* @param tag - filter results by tag name [optional]
* @param root - root of the selection [optional]
*/
function idStartsWith(text, tag, root) {
root = root || document;
tag = tag || "*";
var arr = root.getElementsByTagName(tag);
var len = arr.length;
var ret = [];
for ( var i = 0; i < len; i++ ) {
if ( arr[i].id.indexOf( text ) === 0 )
ret.push(arr[i]);
}
return ret;
}