javascript-jQuery等待上述代码执行完成
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-jQuery等待上述代码执行完成,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2316字,纯文字阅读大概需要4分钟。
内容图文
我已经使用jQuery编写了一些JavaScript,用div和ul替代项替换了所有选择列表,这样它将为我提供更多的样式控制,并使下拉菜单看起来像跨浏览器一样.以下代码对我来说占99%,但是我有一个问题.在代码的底部,我不得不使用.delay()来告诉代码,以等待上面的.each()循环完成其工作.问题在于,至少要等一秒钟,直到替换发生,旧的选择框就会闪烁.我还可以预见另一个问题是,如果each()循环完成需要多于一秒钟的时间,那该怎么办…
我如何才能使代码位于底部,以便仅在每个循环运行并完成后才运行.我也欢迎对其余代码进行任何优化.
编辑:一些HTML已从代码中删除,所以我将其粘贴了:http://pastebin.com/4HFLjHE1
// Check when ready
$(function() {
// Find dropdowns
$("select.dropdownreplace").each(function() {replaceDropDown(this);});
// If document clicked anywhere hide drop downs
$(document).click(function(event){
$("div.dropdownreplace ul").hide();
});
});
function replaceDropDown(that) {
// Create HTML for new drop down
// hidden field
var hiddeninput = $('');
// div
var dropdowndiv = $(''+$(":selected", that).text()+'
');
// loop through values and make li's
$("option", that).each(function() {
$("ul", dropdowndiv).append(''+$(this).val()+''+$(this).text()+' ');
// set click handler for this drop down
$(dropdowndiv).click(function() {
$("ul", this).show();
return false;
});
// set click handler for link items
$("a", dropdowndiv).click(function() {
// Get name of hidden input
var nameofdropdown = $(this).parent().parent().parent().attr('id');
var nameofinput = nameofdropdown.replace("dropdownreplacement_", "");
// set hidden input value to whats been clicked
$("[name='"+nameofinput+"']").val($(this).parent().find("span").text());
// set div
$("div#"+nameofdropdown+" > span").text($(this).text());
$("div#"+nameofdropdown+" ul").hide();
return false;
});
});
// Remove drop down then add in replacement html
$(that).delay(1000).after(hiddeninput);
$(that).delay(1100).after(dropdowndiv);
$(that).delay(1200).remove();
}
恶作剧
史考特
解决方法:
在函数内部,将jquery传递给您的索引与您拥有的项目总数进行比较.
我不知道您的html,但我相信您可以做到这一点.
更改函数,使其接收jquery发送的索引参数.
$("option", that).each(function(index) {
然后,在该函数的末尾,将长度与索引进行比较,如果它们相同,那么就完成了
if ( $('option', that).length == (index +1 ) ) {
$(that).after(hiddeninput);
$(that).after(dropdowndiv);
$(that).remove();
}
根据我的测试,这应该是您所需要的.不知道是否有更“标准”的方式来做.
希望这可以帮助
内容总结
以上是互联网集市为您收集整理的javascript-jQuery等待上述代码执行完成全部内容,希望文章能够帮你解决javascript-jQuery等待上述代码执行完成所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。