[问题] 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