我有一个看起来有点像这样的功能:
$('#CompanyDropDown').bind("change", function () {
$('#Products').find('.ProductDropDown').each(function () {
setRates(this);
});
identifyLowestRate();
});
基本上我们有一些产品行,每个产品都有一些列,其中一列是“Rate”。当公司下拉列表更改时,所有产品都会更改,并且费率列会更新。
假设我们需要在产品洗牌时找到所有产品中的最低费率。
setRates正在执行以下操作:
$('#Product1').val(foo);
identifyLowestRate正在做这样的事情(循环产品):
lowestRate = Math.min(parseFloat(lowestRate), parseFloat($(this).val()));
identifyLowestRate
再次查看产品循环并找到最低费率。然而问题是它找到了先前的最低费率,好像setRates
仍未完成。实际上,如果您在identifyLowestRate
之前设置断点或警报,您确实可以看到setRates更改尚未提交到我们的网页。
这是jQuery中的“东西” - 在从.val()中检索值之前,你必须以某种方式提交更改吗?
答案 0 :(得分:1)
不,您永远不必对val()
进行更改。您可能必须小心您的代码执行顺序,但从您的代码片段看起来很好。但是,如果您调用异步函数,则可能是您的错误的来源。
答案 1 :(得分:1)
将值传递给val()设置和"提交"它马上。再次调用它将检索该输入的最新值。