summaryrefslogtreecommitdiffstats
path: root/theme/javascript/core
diff options
context:
space:
mode:
authorJames Phillpotts <jphillpotts@scottlogic.co.uk>2014-04-10 10:29:17 +0100
committerAaron O'Mullan <aaron.omullan@friendco.de>2014-04-12 01:26:03 -0700
commitb07681a16a291a38fdbdfa3065a747ab26f9a6c9 (patch)
treeffb07c822518e689e619dc1ac8780f10877f7b7f /theme/javascript/core
parentf6595f51119baca04bf91e619f64518d400e5cae (diff)
downloadgitbook-b07681a16a291a38fdbdfa3065a747ab26f9a6c9.zip
gitbook-b07681a16a291a38fdbdfa3065a747ab26f9a6c9.tar.gz
gitbook-b07681a16a291a38fdbdfa3065a747ab26f9a6c9.tar.bz2
Quiz with GFM checkbox lists
Diffstat (limited to 'theme/javascript/core')
-rw-r--r--theme/javascript/core/quiz.js24
1 files changed, 13 insertions, 11 deletions
diff --git a/theme/javascript/core/quiz.js b/theme/javascript/core/quiz.js
index 2e900e8..7043641 100644
--- a/theme/javascript/core/quiz.js
+++ b/theme/javascript/core/quiz.js
@@ -6,9 +6,8 @@ define([
], function($, execute, analytic, state){
// Bind an exercise
var prepareExercise = function($exercise) {
- var $answers = $exercise.find(".quiz-answers").find("input[type=radio], input[type=checkbox]");
- $answers.click(function(e) {
+ $exercise.find(".quiz-answers input").click(function(e) {
e.preventDefault();
});
@@ -16,19 +15,22 @@ define([
$exercise.find(".action-submit").click(function(e) {
e.preventDefault();
analytic.track("exercise.submit");
- $exercise.find("tr.alert-danger").removeClass("alert-danger");
+ $exercise.find("tr.alert-danger,li.alert-danger").removeClass("alert-danger");
$exercise.find(".alert-success,.alert-danger").addClass("hidden");
- var result = true;
- $exercise.find(".quiz input[type=radio],.quiz input[type=checkbox]").each(function(i) {
- var correct = $(this).is(":checked") === $answers.slice(i).first().is(":checked");
- result = result && correct;
- if (!correct) {
- $(this).closest("tr").addClass("alert-danger");
- }
+ $exercise.find(".quiz").each(function(q) {
+ var result = true;
+ var $answers = $exercise.find(".quiz-answers").slice(q).find("input[type=radio], input[type=checkbox]");
+ $(this).find("input[type=radio],input[type=checkbox]").each(function(i) {
+ var correct = $(this).is(":checked") === $answers.slice(i).first().is(":checked");
+ result = result && correct;
+ if (!correct) {
+ $(this).closest("tr, li").addClass("alert-danger");
+ }
+ });
+ $(this).find(result ? "div.alert-success" : "div.alert-danger").toggleClass("hidden");
});
- $exercise.find(result ? "div.alert-success" : "div.alert-danger").toggleClass("hidden");
});
$exercise.find(".action-solution").click(function(e) {