JQuery仅适用于警报

JQuery only works with alert

本文关键字:适用于 JQuery      更新时间:2023-09-26

此代码仅适用于警报。删除警报后将不会执行代码:

$(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值,否则,就不会定义该值。

$('#topmenu a')选择器是否在前面的pageSection代码有足够的时间运行之前执行?处理这种情况的正确方法是什么?

发生这种情况是因为您的菜单加载速度不够快。您应该改为对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');
      }
    });
  });
});