0
<tr onmouseover="$('#actions').show();" onmouseout="$('#actions').hide();" >
    <td>
        <a onclick="showContacts();">Group Name</a>
    </td>
    <td>
        <span id="actions" style="display:none;">
            <img src="../images/Delete-icon.png" onclick="del();"/>
            <img src="../images/add-16.png" onclick="loadpage('contacts.php');" />
            <img src="../images/mail.png" onclick="send();" />
        </span>
    </td>
</tr>

这是我的代码。<td><tr>鼠标悬停时,我试图在第二个中显示 3 个图像。图像出现在第一个悬停文本<td>时,但当鼠标离开文本时消失。这仅在我的 FF (v3.6) 中发生,但在 IE 和 Chrome 中运行良好。有人可以帮我解决这个问题吗?

4

2 回答 2

5

很可能是因为一旦光标离开td带有文本的元素,mouseout就会引发一个事件,冒泡到父tr元素并在那里处理。

以 jQuery 方式进行,不要在 HTML 代码中附加事件处理程序。

$(function() {
    $('tr').hover(function() { // <- select the right tr here, by e.g. giving it an ID
        $('#actions').toggle();
    });
}

参考文献:.hover(),.toggle()

其他元素也一样。您的代码会更干净,因为视图(HTML 代码)和逻辑(JavaScript)是分开的。


另请注意,在 HTML 文档中 ID 必须是唯一的,因此您不能有另一个具有 ID 的元素action。我这样说是因为当您的代码显示一个表格行时,看起来您还有其他带有#action元素的行。如果是这样,请将其设为一个类并相应地调整选择器。

于 2010-07-19T12:08:04.070 回答
1

来到不显眼的 javascript的光明之路。我们这里都有气球和东西,太有趣了!:)

说真的,请考虑使用内联事件处理程序来做所有这些不显眼的事情。也许你所有的问题之后都会被吹走。

于 2010-07-19T12:08:33.567 回答