我试图让一个简单的click()方法在单击某个div时工作。我已经查看了许多线程,但还没有找到解决方案。这是我的jQuery代码:

var $Chart = $('#Chart');
var $TopBlock = $('#TopBlock');

$Chart.hover(function() {
    //Top Block
    $TopBlock.hover(function() {
        $(this).fadeTo('fast', 1);
        $MiddleBlock.fadeTo('fast', .5);
        $BottomBlock.fadeTo('fast', .5);
    });

    $TopBlock.click(function() {
        alert("click handler called");
    });
});

以及相关的HTML代码:
<div id = "Chart">
<div class = "Block" id = "TopBlock">
        <div class = "Group" id= "Capstone">
            <p>Capstone</p>
        </div>
        <!-- Capstone -->
        <div class = "Competency" id = "CapstoneComp">

        </div>
        <!--Expansion-->
        <div class = "Expand" id= "CapstoneExpand">

        </div>
    </div>
</div>

我包含了top hover函数,因为它可以独立工作。但是,当我添加click函数时,一切都会中断,包括hover函数。我试着将click函数移到$TopBlock悬停之外,但所有东西也都坏了。这应该是一个简单的点击功能,我真的不知道为什么这不起作用。
编辑:很抱歉没有相关资料。第一次张贴在这里。问题是,当我单击$TopBlock div时,click()函数没有启动。它应该会触发一些javascript代码,这些代码会增加我的扩展div的维度,但我只希望首先弹出警报,以确保其正常工作。

最佳答案

采取:

$TopBlock.click(function() {
    alert("click handler called");
});

退出$Chart.hover...事件。另外,从$TopBlock.hover...事件中去掉$Chart.hover...
所以你的代码是:
var $Chart = $('#Chart');
var $TopBlock = $('#TopBlock');

//Top Block
$TopBlock.hover(function() {
    $(this).fadeTo('fast', 1);
    $MiddleBlock.fadeTo('fast', .5);
    $BottomBlock.fadeTo('fast', .5);
});

$TopBlock.click(function() {
    alert("click handler called");
});

Fiddle Example

09-25 18:29
查看更多