使用原型时使用未处理的Click事件(使用lowpro)

时间:2010-09-17 00:30:18

标签: javascript prototypejs lowpro

我有使用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支持的链接时,我甚至看不到警告弹出窗口。所以“点击”事件没有得到妥善处理。

我做错了什么???

谢谢!

1 个答案:

答案 0 :(得分:0)

在做了一些阅读/研究后,我意识到动态生成的元素......

等等......

在DOM加载后,

没有注册/绑定,因此addBehavior需要重新加载() - 以便它获取新元素。

因此,在动态生成新元素后,必须调用

 Event.addBehavior.reload();

在该调用之后,新的动态生成的元素可以像我想要的那样上/下移动。

我知道它必须像那样简单明了...... 叹息