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

看板Web_Design作者 (I do my best)時間6年前 (2018/11/20 19:03), 編輯推噓3(3014)
留言17則, 4人參與, 6年前最新討論串1/2 (看更多)
概述一下目前遇到的問題 導覽列現在有四個連結,點選任一個連結後,用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的情況下,有更好的方法去達到小弟要的 當前頁面畫底線功能嗎 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.222.241.251 ※ 文章網址: https://www.ptt.cc/bbs/Web_Design/M.1542711812.A.C1F.html

11/20 19:19, 6年前 , 1F
load可以塞callback function 這樣會等你load好才執行
11/20 19:19, 1F

11/20 19:26, 6年前 , 2F
另外不太清楚比對的意義 可以點選一個連結 把全部連結
11/20 19:26, 2F

11/20 19:26, 6年前 , 3F
的nowpage class清除 再將點選的添加class就好
11/20 19:26, 3F

11/20 23:44, 6年前 , 4F
同上,這應該不用比對網址
11/20 23:44, 4F

11/20 23:44, 6年前 , 5F
$(“.nav").click(
11/20 23:44, 5F

11/20 23:44, 6年前 , 6F
function(){
11/20 23:44, 6F

11/20 23:44, 6年前 , 7F
$(".nav").removeClass("thispage");
11/20 23:44, 7F

11/20 23:44, 6年前 , 8F
$(this).addClass("thispage");
11/20 23:44, 8F

11/20 23:44, 6年前 , 9F
}
11/20 23:44, 9F

11/20 23:44, 6年前 , 10F
概念應該是這樣就好
11/20 23:44, 10F

11/20 23:44, 6年前 , 11F
更正:thispage—>nowpage
11/20 23:44, 11F

11/21 12:02, 6年前 , 12F
了解!!感謝樓上兩位大大的意見
11/21 12:02, 12F

11/23 22:17, 6年前 , 13F
load檔案是需要下載時間的,馬上綁click事件自然會找
11/23 22:17, 13F

11/23 22:17, 6年前 , 14F
不到對象。
11/23 22:17, 14F

11/23 22:18, 6年前 , 15F
load方法只適合在local測試時偷懶用
11/23 22:18, 15F

11/23 22:18, 6年前 , 16F
正式環境請用pug編譯或套框架
11/23 22:18, 16F

11/25 13:18, 6年前 , 17F
原來如此 感謝提供知識
11/25 13:18, 17F
文章代碼(AID): #1Ry-e4mV (Web_Design)
文章代碼(AID): #1Ry-e4mV (Web_Design)