我是否需要"承诺" Jquery中的.val()更改?

时间:2014-04-15 17:17:24

标签: jquery

我有一个看起来有点像这样的功能:

$('#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()中检索值之前,你必须以某种方式提交更改吗?

2 个答案:

答案 0 :(得分:1)

不,您永远不必对val()进行更改。您可能必须小心您的代码执行顺序,但从您的代码片段看起来很好。但是,如果您调用异步函数,则可能是您的错误的来源。

答案 1 :(得分:1)

将值传递给val()设置和"提交"它马上。再次调用它将检索该输入的最新值。

http://api.jquery.com/val/