JQuery在悬停时显示Div

Fra*_*ank 8 jquery

我试图找出当用户将鼠标悬停在内容块上时如何使用JQuery显示一些工具.例如,块显示如下,最初隐藏的工具:

<div id="block_1">
    <div class="tools" style="display:none;">Tools Here</div>
</div>

<div id="block_2">
    <div class="tools" style="display:none;">Tools Here</div>
</div>
Run Code Online (Sandbox Code Playgroud)

当用户将鼠标悬停在block_1中的任何内容上时,我需要它来显示block_1的工具.

我看到你可以使用通配符来做类似的事情:

$("*[id^=block_]").hover(
    function () {
        // somehow toggle div.tools for this block
    },
    function () {
       // somehow toggle div.tools for this block
    }
Run Code Online (Sandbox Code Playgroud)

我只是想不通你怎么能专门切换那个块的div.tools ...

use*_*716 11

编辑:最后,如果你只是做简单的样式更改,你应该使用CSS来实现这一目标.不是javascript.

这个CSS不适用于IE6,但它几乎适用于所有其他现代浏览器.

给父block_元素一个类block,从中删除内联样式tools,然后执行以下操作:

.block .tools {
    display: none;
}
.block:hover .tools {
    display: block;
}
Run Code Online (Sandbox Code Playgroud)

你可以这样做:

$(function() {
    $("div[id^=block_]").hover( function ( e ) {
        $(this).children('.tools').toggle(e.type === 'mouseenter');
    });
});
Run Code Online (Sandbox Code Playgroud)

虽然我想我会在block_元素中添加一个公共类并按该类选择:

$(function() {
    $("div.block").hover( function ( e ) {
        $(this).children('.tools').toggle(e.type === 'mouseenter');
    });
});
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

在事件处理程序内部,关键字this指的是接收事件的元素.在这种情况下,具有block_nID 的元素.

然后使用.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();
    });
});
Run Code Online (Sandbox Code Playgroud)


mwa*_*way 9

做这个:

$("*[id^=block_]").hover(
    function() {
        // Styles to show the box
        $(this).children('.tools').css(...);
    },
    function () {
        // Styles to hide the box
        $(this).children('.tools').css(...);
    }
);
Run Code Online (Sandbox Code Playgroud)

您可能想要考虑使用$.addClass()$.removeClass(),因为它会更容易管理.