如何在代码中触发jQuery的change事件

19 浏览
0 Comments

如何在代码中触发jQuery的change事件

我有一个工作正常的change事件,但我需要它递归执行。

所以我有一个在change时触发的函数,它会根据类选择器(注意“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) {
        // 我希望每个子元素都触发change事件...
        $(".childOf" + questionId)[visible ? 'show' : 'hide']('slow');
        // 建议的代码
        //$(".childOf" + questionId + " select").trigger("change");
        if (!visible) {
            $(".childOf" + questionId + " select").attr('selectedIndex', 0);
        }
    }
}

到目前为止,建议似乎都有效,但由于change事件触发了一个ajax post,现在它似乎在这里失败了。我会试试看,但我觉得这是另一个问题。

0