在页面加载时添加/删除CSS

时间:2011-05-07 21:31:38

标签: jquery hash

所以,我的麻烦在于我有“选择器”向您显示您正在使用的菜单。我使用了两个类,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()没有被调用。那是因为无论我在那个方法中调用它,它都没有用。但是,为了帮助我,我把它放进去了。

1 个答案:

答案 0 :(得分:0)

问题是你从不调用setSelect()函数(或者至少你的代码显示)