我看到你的 DOM 元素重新绘制,Win7/Chrome。您的代码隐藏在 AJAX 片段中,需要一段时间才能找到,但我认为发生的事情是,当您成功删除项目时 - 它也注册为点击事件,并且在该页面上,您确实有一个点击事件:
// Level 2 handeler
$("#level-2").click(function(){
if ( $( this ).hasClass( "active" ) ) {
$( "#level_holder" ).fadeOut( "slow" );
$( "#loader" ).fadeIn();
$( "#content_holder" ).load('content/content-2.html');
$( "#content_holder" ).fadeIn();
$( "#loader" ).fadeOut();
} else {
swal({ title: "Hov!", text: "Du skal klare level 1 først!", type: "error", confirmButtonText: "Okay" });
}
});
因此,您可能想尝试在可拖放的放置事件中防止事件进一步冒泡。在这部分,添加一些代码来防止点击事件继续冒泡:
function handleItemDrop( event, ui ) {
var slotNumber = $(this).data( 'number' );
var itemNumber = ui.draggable.data( 'number' );
// Hvis delen er placeret i den korrekte ramme.
if ( slotNumber == itemNumber ) {
ui.draggable.addClass( 'correct' );
ui.draggable.draggable( 'disable' );
$(this).droppable( 'disable' );
ui.draggable.position( { of: $(this), my: 'left top', at: 'left top' } );
ui.draggable.draggable( 'option', 'revert', false );
correctItems++;
}
// Antallet af dele der er placeret korrekt = 3 (total = 3), load næste side.
if ( correctItems == 3 ) {
$( "#main" ).load('content/fragments-1/fragment-3.html');
}
event.stopPropagation(); // <-- stops the 'click' event firing, reloading your "page".
}
这里是 jQuery 事件处理的链接:
http://api.jquery.com/event.stoppropagation/
所以 - 简而言之,我认为当您成功放置一个对象时,它也会触发页面的点击事件,最终会重绘该片段。从本质上讲,在 handleItemDrop 函数的末尾添加 event.stopPropagation() 并查看这是否不会停止刷新该 DOM 片段(它不像重做fadeOut 和fadeIn 那样令人耳目一新)。