知道了!这是延迟加载的问题。在最初的问题中,我在头部定义了所有的javascript。它失败了,因为当我使用$(“test”)时,元素还不存在。正确的代码是:
<html>
<head>
<title>Event Test</title>
<script type="text/javascript" src="prototype.js"></script>
<script type="text/javascript">
MyClass = Class.create({
initialize: function(args) {
this.div_id = $(args['div_id']);
},
test: function() {
this.div_id.fire('ag:test');
}
});
</script>
</head>
<body>
<div id="test">
</div>
<script type="text/javascript">
var myclass = new MyClass({div_id:'test'});
$('test').observe('ag:test', function(evt){
$('test').insert('<p>Test</p>');
});
myclass.test();
</script>
</body>