2011-05-07 96 views
1

CSS所以,我的問題是,我有「選擇」,告訴你什麼你菜單上。我使用兩個類,selectedunselected類。添加/刪除頁面加載

頁面加載時,我加載基於URL的哈希值,並加載罰款(這意味着我的功能,當網頁加載,作品!)

現在,我有一個單獨的方法,叫做setSelect()基本上基於在我的JS文檔的開始處聲明的變量,將CSS添加到菜單項中。

因此,這裏的代碼(我砍掉了很多了,只保留相關部分)

var jlLocation = 1; 

function setSelect() { 
     if(jlLocation==1) { 
      $('#location1').removeClass('unselected'); 
      $('#location1').addClass('selected'); 
      $('#location2').removeClass('selected');  
      $('#location2').addClass('unselected'); 
     } 
     else if(jlLocation==2) { 
      $('#location1').removeClass('selected');  
      $('#location1').addClass('unselected'); 
      $('#location2').removeClass('unselected'); 
      $('#location2').addClass('selected'); 
     } 
} 

$(function(){ 
       // Bind an event to window.onhashchange that, when the hash changes, gets the 
       // hash and adds the class "selected" to any matching nav link. 
       $(window).hashchange(function(){ 
        hash = location.hash; 
        document.title = 'Joy Luck ' + (hash.replace(/^#/, '- ') || '') + ''; // Set the page title based on the hash. 
        setSelect(); 
        if (hash == "#Home") { 
         showHome(); 
        } 
        else if (hash == "#Accommodations") { 
         showAccommodations(); 
        }  

        $('#menu a').each(function(){ 
         var that = $(this); 
         that[ that.attr('href') == hash ? 'addClass' : 'removeClass' ]('selected'); 
        }); 
        }) 
        $(window).hashchange(); 
       }); 

再次,如果我在#home散列或#accommodations這些方法運行加載,但setSelect();方法不起作用。所有方法都放在加載哈希的方法之前,所以這不應該成爲問題。

編輯

我知道setSelect()沒有被調用。那是因爲無論我用那種方法稱呼它,它都不起作用。但是,爲了幫幫忙,我把它英寸

+0

它是一個錯字代碼缺少}上第一個函數關閉它?你真的需要重用選擇器。不要多次執行$('#location1')。鏈接他們! $( 「XXX」)ad​​dClass( 「X」)removeClass( 「Y」)。; – epascarello 2011-05-07 21:36:37

+0

對不起,它沒有存活我的粘性複製和粘貼方法。它存在於我的原始代碼中。 – Johannes 2011-05-07 21:37:35

+0

什麼叫setSelect()? – epascarello 2011-05-07 21:41:04

回答

0

的問題是你永遠調用setSelect()功能(或者至少你的代碼顯示)

+0

這是我的錯誤。在它什麼都沒做之後,我已經將它刪除了。 – Johannes 2011-05-07 22:20:50