开发者社区> 问答> 正文

请教一个jquery的多次循环出错问题!? 400 报错

请教一个jquery的多次循环出错问题!? 400 报错

求解个js问题:在一个外层each中,嵌套着一个内层each 每个内层循环都要向一些input中注入数据然后trigger一个点击事件 点击事件是提交至后台验证判断 但当这个外层each过多的时候 会出现有的内层循环的数据注入不进input 但当你在外层循环的时候随意添个alert 然后手动去点击弹出的alert 这内层循环注入input数据就不会丢失 想请问这是个什么问题!

$("#batchCheck").click(function(){
                    $('input[name="publicField"]').each(function(){
                        var publicEname=$(this).next().html();
                        var public=$(this);
                        alert("aa");
                        $('input[name="userFiled"]').each(function(){
                            var userEname=$(this).next().html();
                            var user=$(this);
                            if(userEname==publicEname){
                                user.attr('checked','checked');
                                public.attr('checked','checked');
                                $('#check').trigger('click');
                                return false;
                            }
                        });
                         
                    });
                    $(this).attr("disabled",'false');
});

展开
收起
爱吃鱼的程序员 2020-06-04 15:19:54 706 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    加个sleep吧用setTimeout也可以,不过推荐下 wind.js######

    引用来自“北落”的答案

    加个sleep吧用setTimeout也可以,不过推荐下 wind.js
    setTimeout()这种没用的啊 他是循环内 相当于无效果的! 而且我很奇怪 这种each一多 我模拟的那个点击事件触发的函数里面的前端空值判断可以绕过 直接传去后台了!
    ######你可以看看wind.js######估计是非阻塞模式的原因。建议将两组数据放到外部来比较。######

    引用来自“Narky”的答案

    估计是非阻塞模式的原因。建议将两组数据放到外部来比较。
    放外面作比较?貌似不行吧!我的业务要求是要左边的列表里面每个选项 要对应上右边的列表相同的选项 放到外面没法做吧!
    ######

    引用来自“owenor”的答案

    引用来自“Narky”的答案

    估计是非阻塞模式的原因。建议将两组数据放到外部来比较。
    放外面作比较?貌似不行吧!我的业务要求是要左边的列表里面每个选项 要对应上右边的列表相同的选项 放到外面没法做吧!
    click的时候,把左边的列表和右边的列表push到两个数组里面,然后用一个单独的比较函数来执行比较和填充数据或者DOM操作,这样可以避免多次循环的非阻塞问题啊
    ######个人观点,应该找找还有没有更好的逻辑。######

    引用来自“Narky”的答案

    引用来自“owenor”的答案

    引用来自“Narky”的答案

    估计是非阻塞模式的原因。建议将两组数据放到外部来比较。
    放外面作比较?貌似不行吧!我的业务要求是要左边的列表里面每个选项 要对应上右边的列表相同的选项 放到外面没法做吧!
    click的时候,把左边的列表和右边的列表push到两个数组里面,然后用一个单独的比较函数来执行比较和填充数据或者DOM操作,这样可以避免多次循环的非阻塞问题啊
    确实是非阻塞模式惹的祸 我在代码中间随便加了个阻塞下就好了!
    var date=new Date();
    var flag=false;
    while(!flag){
    	var a=new Date();
    	var b=a.getTime()-date.getTime();
    	if(b>100){
    		flag=true;
    	}
    }
    ######问题解决了就好,可以优化一下。
    2020-06-04 16:00:39
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关课程

更多

相关电子书

更多
《0代码搭应用》 立即下载
不止代码 立即下载
JS 语言在引擎级别的执行过程 立即下载