2010-07-19 84 views
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> 

这是我的代码。我试图在<tr>徘徊时在第二个<td>中显示3个图像。在将鼠标悬停在第一个<td>的文本上时,图像出现,但在鼠标离开文本时消失。 这只发生在我的FF(v3.6)中,但在IE和Chrome中正常工作。 有人可以帮我解决这个问题吗?Firefox中的JQuery不兼容问题(可能)。在Chrome中工作

回答

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 action另一个元素。我是这样说的,因为当你的代码显示一个表格行时,它看起来像你有其他行#action元素。如果是这样,请将其设置为一个班级并相应地调整选择器。

+1

值得注意的是,这里的主要区别在于使用['mouseleave'](http://api.jquery.com/mouseleave/)而不是['mouseout'](http://api.jquery)。 com/mouseout /)event :) – 2010-07-19 12:15:16

1

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

严肃地说,想一想,做所有不显眼的事情,而不是使用内联事件处理程序。 也许你所有的问题都被吹走了。

+0

+1对于气球! – Samuel 2010-07-19 12:14:42

相关问题