1-й: Нет необходимости использовать empty()
, затем .append()
, вы можете напрямую использовать html()
2-й: Событие изменения не будет запущенопоскольку элемент еще не представлен в DOM, поэтому вам нужно проверить, что html()
завершен .. вам нужно использовать $.when().then()
3-й , чтобы вызвать событие, которое вы можетеиспользуйте .change()
, как сказал @Daniel .. после события change()
, а не до него
$(document).ready(function () {
// change event
$(document).on('change', '#myDropdown', function() {
//localStorage.setItem('selected_val', $(this).val());
alert($(this).val());
});
//call on load
$.when(someFunction()).then(function(){
$('#myDropdown').change();
});
});
// functions
function someFunction(){
var mycondition = "true";
//run busines slogic
var htmlVar = "";
if(mycondition == 'true'){
htmlVar = '<select id="myDropdown" class="check">'+
'<option value="one">one</option>'+
'<option value="two">two</option>'+
'<option selected = "selected" value="three">three</option>'+
'<option value="four">four</option>'+
'</select>';
}
$("#outerDiv").html(htmlVar);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<div id="outerDiv"></div>