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