根据当前悬停的类将CSS应用于具有相同类的多个元素

时间:2012-03-08 21:58:08

标签: javascript jquery

我在页面上有多个具有匹配类的元素。这些类是由变量构建的,所以我不能将css硬编码到样式表中。构成页面的元素将不断变化,因此我需要一些javascript来查找元素的类,然后为该类应用一些css。它位于一个带有Jquery,Drupal(视图)的网站上,如果它有帮助的话......

我是那里的一部分。我写了以下脚本:

$(document).ready(function(){
$("a").hover(function() {
   var myClass = $(this).attr("class");
   $(.$myClass).hover(function(){
      $(this).css({
      border : '3px solid red',
      color : 'red'
      });
   });
});
});

现在如果我在那里放一个'警报',我看到它正在捕捉当前正在盘旋的元素的类。但我无法得到它然后找到该类的页面上的所有元素并应用CSS。要添加一些信息,我想要调整的两个元素是一个小缩略图,我想添加一个边框,以及一个我希望改变颜色的链接节点的标题。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

你遇到的问题是双重的(至少),但实际上你是在声明这个变量:

var myClass =  $(this).attr("class");

然后尝试使用其他名称.$myClass访问该变量,应该是:

$(.myClass)

此外,选择器的句点不是变量名称的一部分,它是一个字符串,因此必须引用并连接:

$('.' + myClass)

此外,您不会在这些元素悬停时将行为分配给其他元素,而是悬停在您当前正在悬停的a元素上。所以你的

$("a").hover(function() {
   var myClass = $(this).attr("class");
   $(.$myClass).hover(function(){
      $(this).css({
      border : '3px solid red',
      color : 'red'
      });
   });

应该是:

$("a").hover(function() {
   var myClass = $(this).attr("class");
   $('.' + myClass).css({
      border : '3px solid red',
      color : 'red'
      });
   });