Подтвердить что ты не робот

Запуск функции изменения 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;         
    }
});
});
4b9b3361

Ответ 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.