javascript - 使用原型(prototype)时未处理点击事件(使用 lowpro)

标签 javascript prototypejs lowpro

我有 JS 代码,它使用 lowpro(原型(prototype)扩展)来重新排序一组动态生成的问题。因此,当我单击 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 支持的链接时,我什至没有看到弹出的警报。因此“click”事件没有得到正确处理。

我做错了什么???

谢谢!

最佳答案

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

等等...

在 DOM 加载后不会注册/绑定(bind),因此需要重新加载 addBehavior 才能获取新元素。

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

 Event.addBehavior.reload();

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

我知道它一定是那么简单和明显的事情......叹息

关于javascript - 使用原型(prototype)时未处理点击事件(使用 lowpro),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3731911/

相关文章:

javascript - 为什么只能使用最新的按钮?我发现其他按钮的 onclick 函数为 null

javascript - 从回调中调用对象属性

javascript - 原型(prototype) IE、Firefox、Chrome 差异

javascript - 打开DIV关闭其他

javascript - ajax 请求的返回值到另一个函数

ajax - 通过 AJAX 下载 CSV

javascript - 使用 ng-repeat 和 ng-if 进行代码优化

javascript - jQuery - 使用旋转 gif 阻止模式,没有 jQuery 阻止 UI