我构建了这个非常简单的脚本,但我没有工作。
有人可以告诉我这个错误在哪里吗?
HTML
<div id="hello" style="border: 1px solid #000000; margin:10px; padding:5px;">Hello</div>
<div style="border: 1px solid #000000; margin:10px; padding:5px;">Word</div>
<div style="margin:10px; padding:5px;">Test</div>
JS
$(function()
{
$('div').live('hover', function (event)
{
if (event.type == 'mouseover')
{
$(this).addClass('mark');
}
else
{
$(this).removeClass('mark');
}
});
});
http://www.jsfiddle.net/4pYth/4/
提前致谢!
彼得
答案 0 :(得分:3)
我想你想为这一个使用两个独立的直播活动。
$('div').live('mouseenter', function() {
$(this).addClass('mark');
}).live('mouseleave', function() {
$(this).removeClass('mark');
)};
编辑:
以下是mouseenter
和mouseover
之间差异的链接,以防您好奇:
What is the difference between the mouseover and mouseenter events?
答案 1 :(得分:0)
hover
不是一个事件。
jQuery对象上的许多与事件相关的快捷方法都是实际事件:click
,submit
等。但是hover
不是,它是一个单独的快捷方法,用于注册{ {1}}和mouseenter
事件。
mouseleave
只能接受事件,所以如果你想使用类似悬停的代码,你需要单独的事件,就像凯尔的例子一样。
但是,这会有点慢,因为现在jQuery必须监视每个鼠标移动,以查看它是否发生在live()
元素上。使用div
绑定页面中当前div的hover()
/ mouseenter
事件可能会更快,而不是leave
- ness。如果你确实有动态添加的live
元素,那么在将它们添加到文档时必须重新绑定。
更好:只使用CSS悬停。只有IE6才能使旧的div
失败;如果你真的需要为那个浏览器的用户提供漂亮的悬停效果(哇!他们不值得,那些恶棍!)那么你只能为该浏览器添加后备脚本,例如:
:hover