您应该在表单上创建一个事件处理程序来管理所有的单击。你应该做一个选择,因为你只关心
<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" ) {
idStartsWith("details_", "div", form).invoke("hide");
$(el.id + "_div").show();
}
});
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;
}