编辑:如果仅进行简单的样式更改,应使用CSS来完成,而不是JavaScript。
这个CSS对IE6无效,但对于几乎所有其他现代浏览器都有效。
给父级block_
元素添加类似block
的类名,从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 的元素。
然后用 .children()
方法 选择具有 tools
类的子元素。
.toggle()
方法 可用于显示/隐藏元素。我给它传递了一个参数,该参数是测试发生的事件类型的结果。如果事件是 'mouseenter'
,则会显示 .tools
,否则将隐藏它。
外部的 $(function() {...});
是把你的代码包装在jQuery的.ready()
方法中的一种快捷方式,确保你的代码不会在 DOM 准备好之前运行。
如果你喜欢,可以给.hover()
方法两个函数。然后我会使用 .show()
和 .hide()
方法而不是 .toggle()
。
$(function() {
$("div[id^=block_]").hover( function () {
$(this).children('.tools').show();
}, function () {
$(this).children('.tools').hide();
});
});