2016-05-18 81 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上的點擊事件期間添加。 –