【问题标题】:Adding/Removing CSS on page load在页面加载时添加/删除 CSS
【发布时间】:2011-05-07 21:31:37
【问题描述】:

所以,我的问题是我有“选择器”,可以显示你在哪个菜单上。我使用两个类,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() 没有被调用。那是因为无论我在该方法中的哪个位置调用它,它都不起作用。但是,为了帮忙,我把它放进去了。

【问题讨论】:

  • 您的代码在关闭它的第一个函数上缺少 } 是否是错字?此外,您确实需要重用选择器。不要多次执行 $('#location1') 。把他们锁起来! $("xxx").addClass("x").removeClass("y");
  • 对不起,它无法在我的复制和粘贴粘性方法中幸存下来。它存在于我的原始代码中。
  • 变量jlLocation永远不会改变。
  • 没错,在这个例子中没有改变。但这不是问题,因为即使它是 1,条件也会触发。但问题是方法没有。

标签: jquery hash


【解决方案1】:

问题是你从来没有调用过setSelect() 函数(或者至少你的代码表明了这一点)

【讨论】:

  • 那是我的错误。在它实际上什么也没做之后我把它删除了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多