Try attaching event
to $(document)
, adding unique class
to replaced, replacement elements
$(document).on("change", ".toggle", function(e) {
console.log(e.target.value)
});
Replace input.toggle
element with select.toggle
element; cache new .toggle
element as selector; remove input.toggle
DOM
element, jQuery object
// replace `input` element with `select` element, having same unique `class`
// create cached selector of replacement `select` element, `toggled`
// remove jQuery object, `DOM` element `input.toggle`
var toggled = $(".toggle").replaceWith(function(i, el) {
return "<select class=toggle name=toggle>"
+ "<option value=null>1</option>"
+ "<option value=2>2</option>"
+ "</select>"
}) && $(".toggle").is("input") || $("select.toggle");
$("input.toggle").remove();
$(document).on("change", ".toggle", function(e) {
console.log(e.target.value)
});
$(".toggle").val("input").change();
setTimeout(function() {
var toggled = $(".toggle").replaceWith(function(i, el) {
return "<select class=toggle name=toggle><option value=null>1</option><option value=2>2</option></select>"
}) && $(".toggle").is("input") || $("select.toggle");
$("input.toggle").remove();
toggled.find("option:first").val("select").change();
}, 1000);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<input class="toggle" name="toggle" type="text" value="" />