我正在尝试创建一个jQuery Gallery,让用户可以通过包含照片,电影和PDF文档的“图标”翻转(使用上一个,下一个按钮)。
我的策略如下:
以下是代码:
function mainLoop() {
if (icons[newIndex] !== IFM_APPENDED ) { // tests whether this icon has already been loaded
$.ajax({
type: 'POST',
url: '/callback/div_supply',
data: {iconindex: newIndex},
success: function(data) {
$('#jquery-lightbox').append(data); // inserts new icon into the DOM
icons[newIndex] = IFM_APPENDED; // registers that this icon has been loaded
if ($('#icon'+newIndex+' .prev-button').length !== 0) { // test if the previous button is present
$('#icon'+newIndex+' .prev-button').click(function () {
oldIndex = newIndex;
newIndex -= 1;
mainLoop();
}); // END $('#icon'+newIndex+' .prev-button').click()
} // END if ($('#icon'+newIndex+' .prev-button').length !== 0)
if ($('#icon'+newIndex+' .next-button').length !== 0) { // test if the previous button is present
$('#icon'+newIndex+' .next-button').click(function () {
oldIndex = newIndex;
newIndex += 1;
mainLoop();
}); // END $('#icon'+newIndex+' .prev-button').click()
} // END if ($('#icon'+newIndex+' .prev-button').length !== 0)
} // END succes:
}); // END $.ajax
} // END if (icons[newIndex] !== IFM_APPENDED )
$('#icon'+oldIndex).hide(); // hide the old icon
$('#icon'+newIndex).show(); // hide the new icon
}
$(document).ready(function() {
// Hide some elements to avoid conflict with overlay in IE. These elements appear above the overlay.
$('embed, object, select').css({ 'visibility' : 'hidden' });
$("#gallery li").click(function() {
_set_interface();
mainLoop();
}); // END $("#gallery a").click(function
}); // END $(document).ready(function()
当我单步执行Firebug调试器中的mainLoop()时,此代码正常工作。
然而,当我运行它时,脚本就会挂起。当我逐步执行$(document).ready(function()时,它也会停止挂起。没有可以调用Firebug的console.log()调用。
我怀疑我设置递归的方式有问题。
出了什么问题?
答案 0 :(得分:0)
好的,我(有点)发现了正在发生的事情。
问题是由回调HTML中明确声明 display:none 引起的。当我这样做时,.hide()方法无法将其转换为 display:block 。
当您考虑使用Firebug踩踏时,这种情况会变得很浓。但是在Firefox中直接运行代码时失败了。
我仍然不确定实际上是什么打击了我......
修改强>
在我联系Dreamhost支持后,此问题消失了。所以,我认为我身边没有任何问题,但服务器上的某些设置并没有出现问题。但是,我从未了解到实际问题是什么。