Javascript 试图让一些jQuery函数按顺序运行。问题出在哪里?

Javascript 试图让一些jQuery函数按顺序运行。问题出在哪里?,javascript,jquery,function,loops,callback,Javascript,Jquery,Function,Loops,Callback,我正试着按顺序做一些事情,但我遇到了一些麻烦 单击id为sub#u按钮的按钮时 确保类为“.verify”的每个元素都有自己的对象值(请参见代码) 。。。否则,模糊该元素(将运行其他代码并为其创建对象) 在上述检查完成后(现在所有元素都应该有一个对象),然后运行函数“isitgood”。(在所有元素获得其对象值之前,“isitgood”函数正在运行,这是在模糊上完成的) 另外,一旦我以正确的顺序执行了这个函数,最好执行一些.each循环来检查所有的对象值是否都==“ok”,而不是在函数中指定所

我正试着按顺序做一些事情,但我遇到了一些麻烦

  • 单击id为sub#u按钮的按钮时
  • 确保类为“.verify”的每个元素都有自己的对象值(请参见代码)
  • 。。。否则,模糊该元素(将运行其他代码并为其创建对象)
  • 在上述检查完成后(现在所有元素都应该有一个对象),然后运行函数“isitgood”。(在所有元素获得其对象值之前,“isitgood”函数正在运行,这是在模糊上完成的)


  • 另外,一旦我以正确的顺序执行了这个函数,最好执行一些.each循环来检查所有的对象值是否都==“ok”,而不是在函数中指定所有的对象值。对象的所有名称(即登录id、电子邮件)都是具有类名的任何元素的id属性。请验证。

    Javascript是异步的。您的
    isitgood()
    将始终在
    时启动。每个
    仍在做自己的事情

    也就是说,从您的代码来看,不清楚您试图实现什么。您使用
    的方式。每个
    似乎都表明您的标记上有多个相同的ID属性。那不行,ID必须是唯一的。此外,您似乎混合了jQuery和常规Javascript。用一个或另一个。实际上,只要使用jQuery,您就可以节省自己的时间和精力

    如果您确实有唯一的ID,那么您根本不需要
    。每个
    。只需使用if语句检查相应的id


    请提供更多的代码,我可以更新一个更好的答案。例如,你的
    myObj
    看起来像什么?它的元素如何获得
    ok
    的值?在调用
    .each()

    的过程中,它似乎没有被设置好。您可以在单击回调中进行快速索引检查:

    var sub_buttons = $("#sub_button");
    sub_buttons.click(function() {
    
        $(".verify").each(function(index){
    
            objtitle = $(this).attr('id');
    
            if (!myObj[objtitle]) { 
    
            $("#"+objtitle).blur(); // Define anything undefined
    
            }
    
            if (index == sub_buttons.length - 1)
                isitgood();
            }
    
        }); // end each
    
    }); // end click function
    

    这将检查您是否在jQuery对象中的最后一个元素上,如果是,将运行
    isitgood()
    函数。这样,您就可以确保使用完
    $。在执行
    isitgood()之前,每个
    方法都是唯一的。如果我想检查myObj.theid是否存在并且它的值是否为“ok”,我将类“verify”添加到表单元素中。这是不正确的。默认情况下,Ajax调用是异步的,但普通的jQuery迭代回调则不是。例如,jQuery
    delay
    或普通的old
    setTimeout
    ——但是
    每一个
    都不是它们中的一个。为什么您希望对元素调用
    blur
    来更新名为
    myObj
    的Javascript对象?
    var sub_buttons = $("#sub_button");
    sub_buttons.click(function() {
    
        $(".verify").each(function(index){
    
            objtitle = $(this).attr('id');
    
            if (!myObj[objtitle]) { 
    
            $("#"+objtitle).blur(); // Define anything undefined
    
            }
    
            if (index == sub_buttons.length - 1)
                isitgood();
            }
    
        }); // end each
    
    }); // end click function