此代码仅适用于警报。删除警报后不会执行代码:
$(document).ready(function() {
$('#topmenu').load('/include/topmenu.htm');
});
$(window).load(function() {
var pagePath = window.location.pathname;
var pageSplit = pagePath.split('/');
var pageSection = pageSplit[1];
alert('hi');
$('#topmenu a').each(function() {
var path = this.pathname;
var section = path.split('/')[1];
if (section == pageSection) {
$(this).addClass('selected');
}
});
});
<a href="/section1/index.asp">Section1</a>
<a href="/section2/index.asp">Section2</a>
<a href="/section3/index.asp">Section3</a>
似乎警报之后的代码仅在警报存在时识别pageSection值,否则,未定义该值。
在前一个pageSection代码之前执行的$('#topmenu a')
选择器是否有足够的时间运行?处理这种情况的正确方法是什么?
答案 0 :(得分:2)
这种情况正在发生,因为您的菜单加载速度不够快。您应该将回调应用于load()
。
$(document).ready(function() {
$('#topmenu').load('/include/topmenu.htm', function() {
var pagePath = window.location.pathname;
var pageSplit = pagePath.split('/');
var pageSection = pageSplit[1];
$('#topmenu a').each(function() {
var path = this.pathname;
var section = path.split('/')[1];
if (section == pageSection) {
$(this).addClass('selected');
}
});
});
});