如何触发代码中的jQuery更改事件

我有一个改变事件,工作正常,但我需要得到它recursion。

所以我有一个函数,触发的变化将“改变”其他下拉式基于类select器(通知“下拉式”,可能有多个)。 此代理更改不触发该function,因此失败。 我怎样才能使它工作?

$(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); } } } 

迄今为止的build议似乎工作,但随着变化事件触发ajax后,现在似乎在这里失败。 我会去玩,但这是我感觉到的另一个问题。

使用trigger()方法

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

change()方法的无参数forms触发一个change事件。 你可以写下如下的东西:

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

对于我$('#element').val('...').change()是最好的方法。

 $(selector).change() 

。更改()


.trigger( “改变”)

更慢的select,更好的抽象。

.trigger( “改变”)

 $(selector).trigger("change") 

使用:

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

要么

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

要么

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

触发器可以是JavaScript支持的任何事件。希望对所有的人都容易理解。

把这个函数放在一个包装中,然后在onchange事件中调用它。