0


0

prototype / lowproを使用して、画面上のアイテムを並べ替えます。 JSが機能しない

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)内に移動するリンクがあります。

Move Up

しかし、うまくいかないようです。 イベントハンドラに「クリック」イベントが表示されないようです…​

そのコードの何が問題になっていますか? ありがとうございます。

1 Answer


0


私はlowproに馴染みがありませんが、バニラプロトタイプを使用したソリューションであり、「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();
  });
});