刷新页面时,hasClass不起作用

时间:2016-05-18 04:36:25

标签: javascript jquery

我想说body是否有x类来添加x类。

的Javascript

$('body').toggleClass('projectLoaded');
$('[data-type="projectLoader"]').click(function() {
  var proj = $(this)[0].getAttribute('data-project');
  $('#arrow-nav').addClass('slideIn');

  updateHash(proj);
  return false;
});
$('[data-type="projectDie"]').click(function() {

  $('body').removeClass('projectLoaded');
  $('#arrow-nav').removeClass('slideIn');
  return false;
});

if ($('body').hasClass('projectLoaded')) {
  $('#arrow-nav').addClass('slideIn');
} else {
  $('#arrow-nav').removeClass('slideIn');
}

触发projectLoaded时,addClass适用于slideIn,但当我刷新时,即使projectLoaded处于有效状态,addClass也会消失。我认为hasClass会起作用,但事实并非如此。一切正常,但只是刷新就消失了。

工作页面here,点击一个项目,您#arrow-nav.slideIn正在工作,但刷新并且未添加.slideIn

更新 这对我有用:

$( 'document' ).ready(function() {
        if ($('body').hasClass('projectLoaded')) {
            $('#arrow-nav').addClass('slideIn');
        } else {
            $('#arrow-nav').removeClass('slideIn');
        }
});

$( 'body.projectLoaded' ).ready(function() {
    $('#arrow-nav').addClass('slideIn');
});

如果这不合适或有更有效的方法,请在下面提交。

2 个答案:

答案 0 :(得分:2)

按如下方式检查就绪可能会有所帮助

$( document ).ready(function() {
    console.log( "ready!" );
    $('body').toggleClass('projectLoaded');
});

我的直觉告诉我这会起作用,但没有测试它。

$( 'body' ).ready(function() {
    console.log( "ready!" );
    $('body').toggleClass('projectLoaded');
});

答案 1 :(得分:1)

$('body')。toggleClass('projectLoaded')在函数loadProject()中给出,该函数在检查hasClass条件后执行。因此,在主体中添加类“projectLoaded”之前,hasClass条件已经完成,因此不会添加类“slideIn”。在文档中尝试使用此语句'$('body')。toggleClass('projectLoaded')'就像上面一样。它会起作用。