在开始下一个操作之前完成操作

时间:2012-03-08 13:59:33

标签: jquery

我有以下哪些不起作用

$('#select').val( jQuery.url.param("id") );
$('#button').click();

似乎点击在其上方的行完成之前执行。如何确保在执行单击之前完成第一行?

由于点击操作取决于所设置的选择控件中的值。我目前正在根据选择控件中的第一个选项获得结果。

2 个答案:

答案 0 :(得分:2)

如果你想执行$('#button')。在select的值改变之后点击()然后你可以试试这个

$(document).ready(function(){
    $('#mySelect').change(function(e){
        //alert($(this).val());
        $('#button').click();
    });

    $('#button').click(function(e){
        alert($('#mySelect').val());
    });

   // Change the value of select after 2 seconds of page load and fire the change event
   setTimeout(function(){
       $('#mySelect').val($('#mySelect option:eq(1)').val()); // Selects second item 
       $('#mySelect').change();
   }, 2000);

});

小提琴是here。这可能不是你想要的,而是一个想法。

答案 1 :(得分:2)

JavaScript是单线程的。由于上面的代码都没有任何副作用(比如启动AJAX请求),所以第二个命令在第一个之后执行。这意味着别的东西一定是错的。

试试这个:

  • 您是否在错误控制台中看到任何错误?
  • 您是否检查过$('#select')确实符合某些内容? $('#foo').val(...);不会导致错误,但不会执行任何操作。
  • 当你在调试器中单步执行代码时会发生什么?