第一个jQuery项目 - 使用变量作为选择器

时间:2010-12-31 10:20:04

标签: jquery variables

我想要做的事情很简单,但作为初学者,我对此感到非常沮丧。

这是我的first attempt just to give you the idea

我打算用图片做一些更有趣的事情,但我可以直接看到这不是解决方案。 Mouseover正在改变图像,然后它逐渐消失,看起来很糟糕。

所以,我想我可能会将所有图像放在同一个地方并将它们隐藏起来,使它们可见并在鼠标悬停在相应的热点上时将它们带到前面。我希望有一种方法可以用.css()减少元素的z-index值。

这就是我的用武之地(同一网址,9872_gangsters_moll_2nd_attempt.html)。

$(".hotspot").mouseover(function(){
          //Get the id of this triggered item
          var imageid = $(this).attr("id");
          //use it to make corresponding image id to use as jQuery selector
          var currentImg = '#img_'+ imageid;
  //      alert(currentImg);                   //shows variable is correct
  //      $('.product-img').show();            //works fine with a class
          $('currentImg').show();                //doesn't work with a variable
          $('currentImg').addClass('front');     //same, obviously
});

我最初尝试用css切换可见性,但是使用了jQuery的show / hide。都没有奏效。问题似乎是将'currentImg'作为选择器传递。

您可以提供的任何帮助都将非常感激。

谢谢,

安迪

3 个答案:

答案 0 :(得分:5)

只需删除引号,使其使用文字字符串(而不是变量)。 $('currentImg')应该只是$(currentImg),就像这样:

$(".hotspot").mouseover(function(){
   var currentImg = '#img_'+this.id;
   $(currentImg).show().addClass('front')
});

上面的其他更改...... .id之类的内容是DOM属性,您可以直接访问它们(而不是效率较低的.attr("id"))。

答案 1 :(得分:1)

$('currentImg').show();正在使用字符串文字,而不是变量。摆脱引号。

答案 2 :(得分:0)

当您在单引号或双引号中包含一组字母时,它将成为字符串文字。 当你说$('currentImg')时,它会搜索一个名为'currentImg'的html标签。你需要的是@Nick和@David提到的$(currentImg)