2015-09-17 64 views
0

這段代碼有什麼問題?可能很多我是jquery的新手。我試圖在頁面中淡出,然後將背景淡入淡出和導航中,然後進行設置,以便鏈接將淡出頁面並引入新頁面。我現在的代碼並不是很有效,我認爲一些語法和格式是問題所在。我的jQuery語法和格式化有什麼問題?

$(document).ready(function() { 

    $('body').fadeIn(1500); 
}); 

$('#background').addClass('background'); 

setTimeout(function() { 
    $('#background').addClass('background-blured'); 
}, 1500); 

$("h1").delay(2000).animate({ 
    top: -50, 
    opacity: 1, 
    }, 700, function() { 
    // Animation complete. 
}); 


$('.link').click(function() { 

    event.preventDefault(); 

    newLocation = this.href; 

    $('body').fadeOut(500, newpage); 

}); 

function newpage() { 

    window.location = newLocation; 

} 

}); 

謝謝!

+3

正確縮進代碼是發現問題的第一步。 – Jamiec

+4

你的大部分代碼都在*'document.ready' *之外。學習使用適當的縮進,以便您可以看到代碼封裝 – charlietfl

+1

語法錯誤在JavaScript控制檯中觸發特定的錯誤消息。是這樣嗎? –

回答

0

$(文檔).ready在DOM完全加載後立即觸發。 $(document).ready塊之外的任何JavaScript都在瀏覽器仍在加載頁面時運行。所以如果您的$('#background')元素尚未加載到DOM,jQuery不能將「背景」類添加到它。並且更可能只有一些$('。link')元素會添加點擊事件偵聽器,因爲它們在JavaScript運行時尚未加載。這就是爲什麼你應該在$(document).ready函數中嵌入這樣的東西。

$(document).ready(function() { 

    $('body').fadeIn(1500); 

    $('#background').addClass('background'); 

    setTimeout(function() { 
     $('#background').addClass('background-blured'); 
    }, 1500); 

    $("h1").delay(2000).animate({ 
     top: -50, 
     opacity: 1, 
    }, 700, function() { 
     // Animation complete. 
    }); 

    $('.link').click(function() { 
     event.preventDefault(); 
     newLocation = this.href; 
     $('body').fadeOut(500, newpage); 
    }); 
}); 

function newpage() { 
    window.location = newLocation; 
} 

注意正確的縮進,您可以很容易地看到$(document).ready函數內部是什麼。另外請注意,不要將像newpage()函數那樣的標準函數放在$(document).ready中。

+0

非常感謝! –