2016-05-18 65 views
2

我想说如果body有x类添加x类。页面刷新时hasClass不工作

的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

UPDATE 这是对我工作:

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

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

如果这是不恰当或有这样做,请在下面提交它的更有效的方式。

+4

你有没有尝试把代码里面的document.ready函数()? – ssilas777

+2

您可以向我们展示一些工作代码,以便更易于调试。 – Shrabanee

+1

一些HTML,一些HTML,我的王国的一些HTML! – Jhecht

回答

2

检查准备如下可能有助于

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

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

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

这两个工作正常,因为我不知道'身体就绪函数'所以我创建了[jsFiddle这里](https://jsfiddle.net/ –

+0

@Kirankumar如果我这样做,并在addClass交换警报,在主页上,其中.projectLoaded不再在身上,它仍然存在。刷新将不会删除 –

+0

是否有可能在这里发生双重通话,我有类似的经历,并且通过添加解除绑定到点击通话,修复了问题。 $('[data-type =“projectDie”]') .unbind( '点击')。CLI ck(function(){...} – Cyberience

1

$( '主体')。toggleClass( 'projectLoaded')与在hasClass条件检查之后执行的功能loadProject()给出。因此,在类“projectLoaded”被添加到主体中之前,hasClass条件被优先考虑,因此不会添加类“slideIn”。在文档中准备好如上所述的'$('body')。toggleClass('projectLoaded')'。它会工作。

+0

大家都在暗示这一点,当我这样做时,网站就会中断。这会立即执行.projectLoaded,并且只能在.projectLoader上的点击事件期间添加。 –