我有一个包含问题的div


  问题2:
          16的平方根是多少?

A. 7
B. 5
C. 4
D. 1



我需要这样做,以便在选择答案时,它会向上滑动并显示:


QUESTION 2: Correct! (Or Incorrect!)



我在这里使用Javascript都能正常工作:

function finalizeAnswer(bttn,c,questionId) {
    if (c) {
        bttn.parentNode.style.backgroundColor="lightgreen";
        bttn.parentNode.innerHTML="<b>QUESTION "+(questionId+1)+":</b> Correct!";
    } else {
        bttn.parentNode.style.backgroundColor="pink";
        bttn.parentNode.innerHTML="<b>QUESTION "+(questionId+1)+":</b> Wrong!";
    }
    updateScore();
}


div调整大小是因为其内容不同(不再是一个长问题,只是一个简短的答复)。是否可以在此处替换某些东西以使其向上滑动而不是仅弹出呢?

我提供的功能仅供参考:


  bttn->按下的按钮。 (A,B,C或D)
  
  c->如果答案正确
  
  questionId->用于获取有关问题的数据。
  
  updateScore(); ->只是一个更新测验分数的功能。

最佳答案

该解决方案使用jQuery动画化高度变化。

编辑:我已经更新为使用真正的新高度,而不是24px的神奇猜测。

See Live Demo on jsFiddle

function displayResult(container, correct, questionId){

    // Keep up with the old height
    var oldHeight = $(container).height();

    // Change the contents
    $(container).css('background-color', correct == true ? 'lightgreen' : 'pink');
    $(container).html("<b>QUESTION " + (questionId+ 1) + ":</b> " + (correct == true ? "Correct!" : "Wrong!"));

    // Capture the new height
    var newHeight = $(container).height();

    // Jump back to the old height and then animate to the new
    $(container).css('height', oldHeight);
    $(container).animate({height:newHeight});
}

function finalizeAnswer(bttn,c,questionId) {
    displayResult(bttn.parentNode, c, questionId);

    // I have commented out the call to updateScore since I don't have it
    //updateScore();
}

关于javascript - 向上滑动div以使其与jQuery匹配新内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5835735/

10-12 12:25