У меня есть меню выбора, которое идет динамично
<select id="mymenu">
<option >select your choice</option>
<option value="1">value 1</option>
<option value="2">value 2</option>
<option value="3">value 3</option>
<option value="4">value 4</option>
</select>
id, который я даю. но это меню выбора подходит после загрузки страниц, когда я нажимаю кнопку через ajax. Мне нужно выбрать второй вариант/третий вариант по умолчанию
следующий код не работает для меня, поскольку он идет динамично
$( document ).ready(function() {
$('#mymenu').find('option:eq(1)').attr('selected', true);
});
Как выбрать первый вариант, когда приходит динамически
Функция .ready
срабатывает только при загрузке страницы - вы ожидаете, что она будет постоянно работать в фоновом режиме и запускает любые изменения в DOM; этого не произойдет. Что вам нужно сделать, это снова вызвать вашу функцию после загрузки страниц.
Более сложным решением для текущего сценария является подключение прослушивателя событий к DOM и проверки элементов, вставленных на страницу. После обнаружения требуемого элемента активируйте действие на нем.
На самом деле это решение не для текущего примера, но кому-то, вероятно, понадобится это для выполнения более сложных задач:
// Listen for inserted nodes, checking if its needed one
// and triggering needed action
$(document).bind('DOMNodeInserted', function(event) {
var elm = $(event.target);
if (elm.attr('id') == 'mymenu') {
elm.find('option:eq(1)').attr('selected', true);
}
});
// create select box
var select = $('<select>').attr('id', 'mymenu');
var option = $('<option>');
var option_values = {
0: 'select your choice',
1: 'value 1',
2: 'value 2',
3: 'value 3',
4: 'value 4'
};
$.each(option_values, function(key, val) {
$(select).append(option.clone(true).val(key).text(val));
});
// insert select box into DOM
$(document.body).append(select);