Запуск функции изменения jQuery при подготовке документа
Моя функция изменения позволяет пользователям переключаться из страны в другую и получать разные тексты и функции. Он работает при изменении выбора страны. Но при начальной загрузке страницы он не запускает изменение jQuery, чтобы установить скрытые и отображаемые текстовые div для страны по умолчанию/начальной.
Оба divs отображаются при начальной загрузке страницы. Когда я сменю, а затем вернусь в страну по умолчанию/первоначальной, измените огонь, скройте и покажите огонь, а также покажут правильную информацию и функции.
Я пробовал document.ready
с функцией изменения как внутри выбора переключателя, так и вне функции изменения. Ни одна из них не работает - они не запускают скрытую, показную и другую jQuery в случаях переключения в готовом документе. Мне непонятно, является ли "готовым" допустимое событие триггера.
Я также пробовал:
$('input[name=country]').value('US').trigger('click');
но он нарушил функцию изменения. Вот код. Выбор страны ниже - это всего лишь 2 страны, чтобы упростить ее, но на самом деле их много.
$(document).ready(function()
{
//1st tier - select country via radio buttons:
//Initialize country
$('input[name=country]:first').attr('checked', true); //Set first radio button (United States)
//$('input[name=country]:first').attr('checked', true).trigger('ready'); //sets 1st button, but does not fire change
//$('input[name=country]:first').trigger('click'); //sets 1st button, but does not fire change
$('input[name=country]').change(function ()
{
// change user instructions to be country specific
switch ($('input[name=country]:checked').val())
{
case 'US':
$('#stateMessage1').text('2. Select a state or territory of the United States.');
$('#stateMessage2').text('Start typing a state of the United States, then click on it in the dropdown box.');
$('#threeSelects').show();
$('#twoSelects').hide();
//select via 3 steps
break;
case 'CA':
$('#stateMessage1').text('2. Select a province or territory of Canada.');
$('#stateMessage2').text('Start typing a province of Canada, then click on it in the dropdown box.');
$('#twoSelects').show();
$('#threeSelects').hide();
//select town via 2 steps - country, town
break;
}
});
});
Ответы
Ответ 1
Просто цепочка .trigger('change')
до конца назначения обработчика.
// ----------v-------v-----quotation marks are mandatory
$('input[name="country"]').change(function ()
{
// change user instructions to be country specific
switch ($('input[name="country"]:checked').val())
{
case 'US':
$('#stateMessage1').text('2. Select a state or territory of the United States.');
$('#stateMessage2').text('Start typing a state of the United States, then click on it in the dropdown box.');
$('#threeSelects').show();
$('#twoSelects').hide();
//select via 3 steps
break;
case 'CA':
$('#stateMessage1').text('2. Select a province or territory of Canada.');
$('#stateMessage2').text('Start typing a province of Canada, then click on it in the dropdown box.');
$('#twoSelects').show();
$('#threeSelects').hide();
//select town via 2 steps - country, town
break;
}
}).trigger('change'); // <--- RIGHT HERE
Или, если вы хотите, чтобы он срабатывал только для первого элемента, вместо этого используйте triggerHandler()
.
// ...
$('#twoSelects').show();
$('#threeSelects').hide();
//select town via 2 steps - country, town
break;
}
}).triggerHandler('change'); // <--- RIGHT HERE
Ответ 2
Почему бы просто не запустить change
после выбора соответствующих переключателей?
$('input[name=country]').change();
Это эквивалентно
$('input[name=country]').trigger('change');
Ответ 3
До финала});, добавить в $('input'). change();
Ответ 4
Обычно это делается как:
function onChange ()
{
switch ($('input[name=country]:checked').val())
....
}
$('input[name=country]').change(onChange); // 1. attach it as event handler.
onChange(); // 2. call it first time.