【发布时间】:2011-05-13 22:24:14
【问题描述】:
我有一个工作正常的更改事件,但我需要让它递归。
所以我有一个在更改时触发的函数,它将基于类选择器“更改”其他下拉菜单(注意“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 帖子,它现在似乎在这里失败了。我会玩弄它,但这是我觉得的另一个问题。
【问题讨论】:
-
提供一些代码让我们看看
-
如果您还没有向我们展示 it 是什么,我们如何告诉您如何让它发挥作用?
-
我认为这是一个简单的概念,并不觉得需要代码。到目前为止的答案似乎已经理解了我的解释,所以我现在正在尝试他们的解决方案。如果我没有任何快乐,我会发布一些代码。我的实现实际上要复杂得多。
-
对其进行了排序,这是我在 ajax 发布后更改值的问题。谢谢大家的帮助。发布的建议很有魅力。
标签: javascript jquery jquery-events