Fix JSInput scope leak
Declare variables locally - The `allSections` variable was leaking into the global scope, due to a typo in the declaration. - `dataProcessed` can be declared more narrowly within the callback.
This commit is contained in:
@@ -181,19 +181,15 @@ var JSInput = (function ($, undefined) {
|
||||
}
|
||||
|
||||
function walkDOM() {
|
||||
var dataProcessed, all;
|
||||
|
||||
// Find all jsinput elements
|
||||
allSections = $('section.jsinput');
|
||||
|
||||
var allSections = $('section.jsinput');
|
||||
// When a JSInput problem loads, its data-processed attribute is false,
|
||||
// so the jsconstructor will be called for it.
|
||||
// The constructor will not be called again on subsequent reruns of
|
||||
// this file by other JSInput. Only if it is reloaded, either with the
|
||||
// rest of the page or when it is submitted, will this constructor be
|
||||
// called again.
|
||||
// called again.
|
||||
allSections.each(function(index, value) {
|
||||
dataProcessed = ($(value).attr("data-processed") === "true");
|
||||
var dataProcessed = ($(value).attr("data-processed") === "true");
|
||||
if (!dataProcessed) {
|
||||
jsinputConstructor(value);
|
||||
$(value).attr("data-processed", 'true');
|
||||
|
||||
Reference in New Issue
Block a user