2009-08-04 57 views
0

我正在用JavaScript点击一些div。我想用CSS让用户明白它们是可点击的,例如当鼠标进入div时改变div内链接的颜色。使用JavaScript为我的CSS创建新的定义(如果需要,还可以使用mootools)。选择器问题

在CSS是:

#menu > div:hover > a { 
    color: #f00; 
} 

,它就像一个魅力。

我想只有当JavaScrpt被启用时,鼠标悬停才会改变链接的颜色,因为如果它被禁用,div不可点击,只是链接是。我想添加这个声明与JavaScript,一些在mootools的应该是简单的:

$$('#menu > div:hover > a').setStyle('color', '#f00'); 

但是,选择不上mootools的工作。我应该去each div小孩的#menuaddEvents它。与简单的css定义相比,这对我来说似乎太多了。我怎样才能做到这一点?

替代解决方案(我不知道如何实现)可以写一个with_js_enabled.css来加载低谷的JavaScript。可能吗?

回答

3

简单多了:设置body元素的一类在页面加载:

document.body.className = "js"; 

然后修改你的CSS;

.js #menu > div:hover > a { 
    color: #f00; 
} 

工作:-)

做(虽然我假设你知道,IE 6不支持:悬停在任何东西,但链接?)

+0

+1 Who cares IE <= 6:P – 2009-08-04 10:49:41

1

好吧,既然你问到的mootools这里...

当在div上触发鼠标悬停时,可以在#menu的div内更改所有A的颜色,您可以定义一个类a.red {color:red; }

$("menu").getElements("div").each(function(el) { 
    el.addEvents({ 
     mouseenter: function() { 
      this.getElements("a").addClass("red"); 
     }, 
     mouseleave: function() { 
      this.getElements("a").removeClass("red"); 
     } 
    }); 
}); 

你也可以去$( “菜单”)。的getElements( “格”)。的getElements( “A”),甚至$( “菜单”)。的getElements( “A”),然后将其附加对父母的事件(如果它碰巧是div) - 我想这真的没有关系。

相关问题