Как вызвать событие изменения jQuery в коде

У меня есть событие изменения, которое работает нормально, но мне нужно его вернуть.

Итак, у меня есть функция, которая срабатывает при изменении, которая "изменит" другие выпадающие списки на основе селектора классов (обратите внимание на "drop downS", их может быть больше одного). Это изменение прокси не вызывает функцию и поэтому не выполняется. Как я могу заставить его работать?

Код

$(document).ready(function () {
    var activeDropBox = null;

    $("select.drop-box").change(function () {
        var questionId = $(this).attr("questionId");
        var selectedAnswer = $(this).val();
        activeDropBox = this;

        alert(this.questionId);

        $.ajax(
        {
            type: "POST",
            url: answerChangedActionUrl,
            data: { questionId: questionId, selectedValue: selectedAnswer },
            success: function (data) {
                SetElementVisibility(data.ShowElement, questionId);
            }, error: function (XMLHttpRequest, textStatus, errorThrown) {
                alert('XMLHttpRequest:' + XMLHttpRequest.responseText);
                alert('textStatus:' + textStatus);
                alert('errorThrown:' + errorThrown);
            }
        });
    });

    function SetElementVisibility(visible, questionId) {
        // I would like each child to then trigger the change event...
        $(".childOf" + questionId)[visible ? 'show' : 'hide']('slow');

        // Suggested code
        //$(".childOf" + questionId + " select").trigger("change");

        if (!visible) {
            $(".childOf" + questionId + " select").attr('selectedIndex', 0);
        }
    }
}

Предложения пока работают, но поскольку событие изменения запускает пост ajax, теперь он, похоже, терпит неудачу. Я собираюсь поиграть с ним, но это что-то для другого вопроса, который я чувствую.

Ответ 1

Используйте метод trigger()

$(selector).trigger("change");

Ответ 2

Необязательная форма метода change() вызывает событие change. Вы можете написать что-то вроде:

$(document).ready(function() {
    $("#yourInitialElementID").change(function() {
        // Do something here...
        $(".yourDropDownClass").change();
    });
});

Ответ 3

для меня $('#element').val('...').change() - лучший способ.

Ответ 5

Используйте это:

$(selector).trigger("change");

ИЛИ

$('#id').trigger("click");

ИЛИ

$('.class').trigger(event);

Триггер может быть любым событием, поддерживающим javascript. Надеюсь, это легко понять всем вам.

Ответ 6

Поместите функцию в оболочку и просто вызовите ее в событии onchange.