试图在变量中存储选择器

时间:2013-06-28 13:13:54

标签: javascript jquery html variables css-selectors

好的,所以这就是我想要做的。我有一个具有ID 1到x的navLink类(在这种情况下它是5,但我的想法是,如果需要我可以添加它)。以及选择类下的Div,1Div到xDiv。 div的切换,以及navlinks改变颜色,就像它使用CSS活动标签一样。当我使用Home div并且我不希望其中一个链接以活动状态启动时,这很有效。现在我想要这样做,我需要能够将给定的选择器存储在'active'var中。此外,我试图这样做,当点击导航链接3号,它进入一个不同的页面,我遇到了同样的问题。我对JavaScript有点新意,所以我不确定JS如何存储变量。这是代码:

$(function() {
  var active = $('#1');

  $('.selection').hide();
  $('#1Div').show();

  $('.navLink').hover(
  function() {
     $(this).css("color","#806ac7"); 
  },
  function() {
      if(this === active) {
        $(this).css("color","#961014");
      } else {
        $(this).css("color","#000000");
      }
      });
  $('.navLink').click(function(e){
    active = this;
    $('.navLink').css("color","#000000");
    $(this).css("color","#961014");
      if(this == '#3') {
        location.href = "./Contact.html"  
      } else {
    $('.selection').hide();
    $('#'+ this.id + 'Div').show();
      }
  });
});

提前谢谢你们这里的筹码是很有帮助的。

修改

感谢您的帮助。根据请求,这里是一个例子的链接:http://jsfiddle.net/fgj6H/ 一切正常,但navlink 3上的链接仍在寻找帮助。

2 个答案:

答案 0 :(得分:0)

我认为您的部分麻烦是ID的必须以HTML4中的字母开头,必须在HTML5中包含至少一个字母。 ID不以数字开头。我建议将您的ID重命名为id =“n1”并将其称为

var active = $("#n1");

看到这个答案 What characters are allowed in DOM IDs?

HTML5规范 http://www.w3.org/TR/html5/dom.html#the-id-attribute

答案 1 :(得分:0)

编辑:

我认为你需要这个

if(this.id == 'n3')

而不是

if(this == '#n3')

原始回答:

我认为这可能是一个范围问题。

本地范围:

var active = $('#1');

全球范围:

active = this

尝试删除第一个var,使其读取

active = $('#1');

编辑:这是您的代码,其中包含一些注释。

  $(function() {
  // *** this variable is defined with "var" keyword, meaning it is only available
  // in the immediate scope i.e. within the braces (it's more complicated than that)
  var active = $('#1');

  $('.selection').hide();
  $('#1Div').show();

  $('.navLink').hover(
  function() {
     $(this).css("color","#806ac7"); 
  },
  function() {
      // *** this can only refer to a global variable, as "var active" is not present in here. The global will not get defined till .navLink is clicked.
      if(this === active) {
        $(this).css("color","#961014");
      } else {
        $(this).css("color","#000000");
      }
      });
  $('.navLink').click(function(e){

    // *** this sets a new global variable "active" and gives it a value
    active = this;
    $('.navLink').css("color","#000000");
    $(this).css("color","#961014");
      if(this == '#3') {
        location.href = "./Contact.html"  
      } else {
    $('.selection').hide();
    $('#'+ this.id + 'Div').show();
      }
  });
});