我有使用lowpro(原型扩展)的JS代码来重新排序一组动态生成的问题。因此,当我点击a.move-up时,我想要移动该元素的父母。并且a.move-down假设将其移动。
我正在使用lowpro,因为在dom:loaded之后生成了元素。 http://www.danwebb.net/2006/9/3/low-pro-unobtrusive-scripting-for-prototype
JS代码:
document.observe('dom:loaded', function() {
Event.addBehavior( {
'a.move-up:click': function(event) {
alert('Moving up!')
//moveUp(this);
//event.stop();
},
'a.move-down:click': function(event) {
alert('Moving down!')
//moveDown(this);
//event.stop();
}
});
});
我为每个元素(div.question)提供了两个链接,允许该元素向上或向下移动。但是,这些点击事件无法得到处理。
<div id="questions">
<div class="question">Q1 stuff
<a href="#" class="move-up" />Up</a>
<a href="#" class="move-down"/>Down</a>
</div>
<div class="question">Q2 stuff
<a href="#" class="move-up" />Up</a>
<a href="#" class="move-down"/>Down</a>
</div>
</div>
作为调试的一部分,我已经将代码减少到最低限度,只是尝试确保事件处理工作。当我点击JS支持的链接时,我甚至看不到警告弹出窗口。所以“点击”事件没有得到妥善处理。
我做错了什么???
谢谢!
答案 0 :(得分:0)
在做了一些阅读/研究后,我意识到动态生成的元素......
等等...... 在DOM加载后,没有注册/绑定,因此addBehavior需要重新加载() - 以便它获取新元素。
因此,在动态生成新元素后,必须调用
Event.addBehavior.reload();
在该调用之后,新的动态生成的元素可以像我想要的那样上/下移动。
我知道它必须像那样简单明了...... 叹息