it-swarm.com.ru

Как вызвать событие изменения 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);
        }
    }
}

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

162
4imble

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

$(selector).trigger("change");
357
John Hartsock

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

23
Luis Carlos Steffens

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

$(document).ready(function() {
    $("#yourInitialElementID").change(function() {
        // Do something here...
        $(".yourDropDownClass").change();
    });
});
20
Frédéric Hamidi
$(selector).change()

. Изменение ()


.trigger ( "Изменение")

Длиннее медленнее альтернатива, лучше для абстракции.

. Триггер ( "изменение")

$(selector).trigger("change")
8
Geoffrey Hale

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

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

OR

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

OR

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

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

4
Muhammad Fahad