我有一个工作正常的更改事件,但我需要让它递归。
所以我有一个在更改时触发的函数,它将基于类选择器“更改”其他下拉菜单(注意“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 帖子,它现在似乎在这里失败了。我会玩弄它,但这是我觉得的另一个问题。
使用trigger() 方法
$(selector).trigger("change");