[問題] document.ready不設置setTimeout跑不出來

作者: windmax1 (I do my best)   2018-11-20 19:03:28
概述一下目前遇到的問題
導覽列現在有四個連結,點選任一個連結後,用js+jquery抓出目前網址比對導覽列的連結
網址,相符則在該連結上追加 class="nowPage",連結文字下方會出現藍色底線表示
正在瀏覽該頁面。
程式碼如下:
$(document).ready(function ()
{
$(".navBar").load("./navBar.html");
setTimeout(function () {
$('nav ul li a').each(function (index) {
$(this).on('click', addClassNowPage(this));
}); }, 2);
});
因為用debugger去跑功能都正常,猜是因為網頁讀取速度差異造成現在的問題
才嘗試用setTimeout,想不到還真的可以,但Delay時間一定要設2毫秒以上XD
想請教有人了解這是什麼原因嗎??
順便請教不使用前端框架React/Angular/Vue的情況下,有更好的方法去達到小弟要的
當前頁面畫底線功能嗎
作者: pkro12345 (席龍)   2018-11-20 19:19:00
load可以塞callback function 這樣會等你load好才執行另外不太清楚比對的意義 可以點選一個連結 把全部連結的nowpage class清除 再將點選的添加class就好
作者: moodoa3583 (金牌台灣啤酒)   2018-11-20 23:44:00
同上,這應該不用比對網址$(“.nav").click(function(){$(".nav").removeClass("thispage");$(this).addClass("thispage");}概念應該是這樣就好更正:thispage—>nowpage
作者: windmax1 (I do my best)   2018-11-21 12:02:00
了解!!感謝樓上兩位大大的意見
作者: a700evolve (五花毛)   2018-11-23 22:17:00
load檔案是需要下載時間的,馬上綁click事件自然會找不到對象。load方法只適合在local測試時偷懶用正式環境請用pug編譯或套框架
作者: windmax1 (I do my best)   2018-11-25 13:18:00
原來如此 感謝提供知識

Links booklink

Contact Us: admin [ a t ] ucptt.com