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

owenor 发布于 2012/11/19 16:15
阅读 1K+
收藏 1

求解个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');
});

加载中
0
北落
北落
加个sleep吧用setTimeout也可以,不过推荐下 wind.js
0
o
owenor

引用来自“北落”的答案

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

引用来自“Narky”的答案

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

引用来自“owenor”的答案

引用来自“Narky”的答案

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

引用来自“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;
	}
}
Narky
Narky
问题解决了就好,可以优化一下。
返回顶部
顶部