放慢功能

时间:2013-12-04 23:12:35

标签: javascript jquery ajax

我的网站可能是found here,我现在特别绊倒了一个问题。我认为函数没有按顺序运行,并且必须在我自己的代码中修复一些问题。现在当刷新页面时,我看到正在选择的年份,然后我看到“make”框在更改为“Acura”之前变为“LOADING ...”。问题是我认为该下拉菜单的“点击”和“更改”是在更改价值之前发生的。

就是这么清楚,点击和更改的模拟就在那里,以便触发此Prototype小部件的更改事件。 jQuery本身无法做到这一点,因为它是用Prototype构建的。

我的代码:

function yearChange()
{
    jQuery("#finder-72--424").val('13080187').change();
    $('finder-72--424').simulate('click');
    $('finder-72--424').simulate('change');
}

function makeChange()
{
    jQuery("#finder-72--425").val('13097610').change( function() {
        $('finder-72--425').simulate('click');
        $('finder-72--425').simulate('change');
    })
}

yearChange();
makeChange();

2 个答案:

答案 0 :(得分:1)

为什么不让这两个函数一起工作,以便回调触发你想要的第二个事件。你看过jQuery promise()了吗?

$('#selector').promise().done(function() { /* Do something */ });

答案 1 :(得分:0)

这是问题的答案,而不是解决问题的方法,但您可以在makeChange()函数的末尾调用yearChange(),也可以在makeChange()上设置计时器{1}}要求一瞬间,可能只是足够时间让它们以正确的顺序执行:

yearChange();
setTimeout(makeChange, 200); // 200 ms