Событие щелчка не обрабатывается при использовании прототипа (с lowpro) - PullRequest
1 голос
/ 17 сентября 2010

У меня есть код JS, который использует lowpro (расширение прототипа) для изменения порядка динамически генерируемых вопросов. Поэтому, когда я нажимаю a.move-up, я хочу переместить родительский элемент этого элемента вверх. И a.move-down, предположим, чтобы переместить его вниз.

Я использую lowpro, так как элементы генерируются после загрузки dom :. 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" не обрабатывается должным образом.

Что я делаю не так ???

Спасибо!

1 Ответ

0 голосов
/ 17 сентября 2010

После некоторого чтения / исследования я понял, что элементы, которые генерируются динамически ...

подожди ...

не регистрируются / не привязываются после загрузки DOM, поэтому необходимо повторно загрузить addBehavior (), чтобы он мог подбирать новые элементы.

Таким образом, после динамического создания новых элементов, должен быть вызов

 Event.addBehavior.reload();

После этого вызова новые динамически генерируемые элементы можно перемещать вверх / вниз так, как я хочу.

Я знал, что это должно быть что-то столь же простое и очевидное, как это ... вздох

...