Refactor answer click handling to prevent duplicate event listeners on the new mark2 page; streamline state management for answer marking.

This commit is contained in:
Ross
2025-11-11 12:49:13 +00:00
parent ac6a8193a3
commit 14a54dfa8b
4 changed files with 121 additions and 73 deletions
+16 -14
View File
@@ -20,25 +20,27 @@ $(document).ready(function () {
//$(".answer-list li").each(function (index, element) {
// $(element).append($("<span class='google-link' title='search for answer with google'><a href='https://www.google.com/search?q=" + $(element).text() + "' target='_blank'>G</a></span>"));
//});
// Legacy per-element click handler: skip on the new mark2 page which
// manages clicks via a delegated handler (it uses #answer-list). This
// prevents duplicate/colliding handlers when mark2 is rendered.
if (!document.getElementById('answer-list')) {
$(".answer-list span.answer").each(function (index, element) {
console.log(element);
$(".answer-list span.answer").each(function (index, element) {
console.log(element);
$(element).click(function (e) {
$(element).click(function (e) {
var classes = ['answer correct', 'answer half-correct', 'answer incorrect'];
$(element).each(function () {
let mark = classes[($.inArray(this.className, classes) + 1) % classes.length];
this.className = mark
this.dataset.newmark = mark.split(" ")[1]
});
prepAnswerData();
var classes = ['answer correct', 'answer half-correct', 'answer incorrect'];
$(element).each(function () {
let mark = classes[($.inArray(this.className, classes) + 1) % classes.length];
this.className = mark
this.dataset.newmark = mark.split(" ")[1]
});
prepAnswerData();
});
});
}
prepAnswerData();
if ($(".post-form").length > 0) {