编辑:最终,如果你只是做简单的样式更改,你应该使用CSS来完成这一点。不是JavaScript。
此CSS不适用于IE6,但它几乎适用于所有其他现代浏览器。
给父block_
元素,如block
A级,来自tools
删除内嵌样式,然后做到这一点:
.block .tools {
display: none;
}
.block:hover .tools {
display: block;
}
你可以这样做:
$(function() {
$("div[id^=block_]").hover(function (e) {
$(this).children('.tools').toggle(e.type === 'mouseenter');
});
});
虽然我认为我会为block_
元素添加一个通用类并按该类别进行选择:
$(function() {
$("div.block").hover(function (e) {
$(this).children('.tools').toggle(e.type === 'mouseenter');
});
});
HTML
<div class="block" id="block_1">
<div class="tools" style="display:none;">Tools Here</div>
</div>
<div class="block" id="block_2">
<div class="tools" style="display:none;">Tools Here</div>
</div>
内的事件处理程序,关键字this
是指接收到的事件的元素。在这种情况下,带有block_n
ID的元素。
然后您使用the .children()
method来选择具有tools
类的子元素。
The .toggle()
method可用于显示/隐藏元素。我已经给出了一个参数,它是测试发生的事件类型的结果。如果事件是'mouseenter'
,将显示.tools
,否则它将被隐藏。
外部$(function() {...});
是一个快捷方式,用于将代码包装到jQuery's .ready()
method中,这可确保您的代码在DOM准备就绪之前不会运行。
如果您愿意,可以给the .hover()
method两个函数。然后我会使用.show()
和.hide()
方法而不是.toggle()
。
$(function() {
$("div[id^=block_]").hover(function() {
$(this).children('.tools').show();
}, function() {
$(this).children('.tools').hide();
});
});
这一个工作,非常感谢。 – Frank 2010-11-01 22:48:25