Использование prototype / lowpro для изменения порядка элементов на экране.JS не работает - PullRequest
0 голосов
/ 17 сентября 2010

Включите в мой HTML следующий JS:

document.observe('dom:loaded', function() {
  Event.addBehavior( {
   'a.move-up:click':  function(event) {
        moveUp(this);
        event.stop();

    },
   'a.move-down:click':  function(event) {
        moveDown(this);
        event.stop();
    }
  });
});

function moveUp(element) {

  var questionElement = $(element).up('div.question');
  var preQuestionElement = questionElement.previous('div.question');
  moveElments('up', questionElement , preQuestionElement);
}

function moveDown(element) {
  var questionElement = $(element).up('.question');
  var postQuestionElement = questionElement.next('.question');

  moveElllments('down', questionElement , postQuestionElement);
}

function moveElments(direction, targRow, sibling) {
    var targetParent = targRow.up('div.questions');
    if(direction == 'up'){
      targRow.remove();
      targetParent.insertBefore(targRow, sibling);
    }
    if(direction == 'down'){
      sibling.remove();
      targetParent.insertBefore(sibling, targRow);
    }
}

Затем у меня есть ссылка, которая при нажатии должна переместить вопрос (заключенный в div.question) в родительский элемент (div.questions).

<a class="move-up" href="#" style="">Move Up</a>

Однако, похоже, это не работает. Похоже, что обработчик событий не видит событие "click" ...

Что не так с этим кодом? Спасибо!

1 Ответ

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

Я не знаком с lowpro, но вот решение, использующее Vanilla Prototype, и подключает слушателей событий, используя observe:

document.observe('dom:loaded', function() {
  $$('a.move-up').observe('click', function(event) {
    moveUp(this);
    event.stop();
  });

  $$('a.move-down').observe('click', function(event) {
    moveDown(this);
    event.stop();
  });
});
...