Make markup changes idempotent

(on a ruby on rails application with turbolinks)
When I press browser back and forward, the initialization code runs again creating double elements
This commit is contained in:
Hasan Kumar Reddy A 2016-02-20 11:12:07 +05:30
parent 3ef254d6bd
commit 78779c258d

View File

@ -82,8 +82,9 @@
// Add fake-checkbox to material checkboxes // Add fake-checkbox to material checkboxes
var $input = $((selector) ? selector : this.options.checkboxElements) var $input = $((selector) ? selector : this.options.checkboxElements)
.filter(":notmdproc") .filter(":notmdproc")
.data("mdproc", true) .data("mdproc", true);
.after("<span class='checkbox-material'><span class='check'></span></span>"); if ($input.siblings(".checkbox-material").length == 0)
$input.after("<span class='checkbox-material'><span class='check'></span></span>");
_toggleTypeFocus($input); _toggleTypeFocus($input);
}, },
@ -91,8 +92,9 @@
// Add fake-checkbox to material checkboxes // Add fake-checkbox to material checkboxes
var $input = $((selector) ? selector : this.options.togglebuttonElements) var $input = $((selector) ? selector : this.options.togglebuttonElements)
.filter(":notmdproc") .filter(":notmdproc")
.data("mdproc", true) .data("mdproc", true);
.after("<span class='toggle'></span>"); if ($input.siblings(".toggle").length == 0)
$input.after("<span class='toggle'></span>");
_toggleTypeFocus($input); _toggleTypeFocus($input);
}, },
@ -100,8 +102,9 @@
// Add fake-radio to material radios // Add fake-radio to material radios
var $input = $((selector) ? selector : this.options.radioElements) var $input = $((selector) ? selector : this.options.radioElements)
.filter(":notmdproc") .filter(":notmdproc")
.data("mdproc", true) .data("mdproc", true);
.after("<span class='circle'></span><span class='check'></span>"); if ($input.siblings(".circle").length == 0)
$input.after("<span class='circle'></span><span class='check'></span>");
_toggleTypeFocus($input); _toggleTypeFocus($input);
}, },
@ -156,6 +159,7 @@
} }
// Add at the end of the form-group // Add at the end of the form-group
if ($formGroup.siblings(".material-input").length == 0)
$formGroup.append("<span class='material-input'></span>"); $formGroup.append("<span class='material-input'></span>");
// Support for file input // Support for file input