Jquery - Mouseover DIV = addClass

时间:2010-09-21 17:20:55

标签: jquery

我构建了这个非常简单的脚本,但我没有工作。

有人可以告诉我这个错误在哪里吗?

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/

提前致谢!
彼得

2 个答案:

答案 0 :(得分:3)

我想你想为这一个使用两个独立的直播活动。

$('div').live('mouseenter', function() {
  $(this).addClass('mark');
}).live('mouseleave', function() {
  $(this).removeClass('mark');
)};

编辑:

以下是mouseentermouseover之间差异的链接,以防您好奇: What is the difference between the mouseover and mouseenter events?

答案 1 :(得分:0)

hover不是一个事件。

jQuery对象上的许多与事件相关的快捷方法都是实际事件:clicksubmit等。但是hover不是,它是一个单独的快捷方法,用于注册{ {1}}和mouseenter事件。

mouseleave只能接受事件,所以如果你想使用类似悬停的代码,你需要单独的事件,就像凯尔的例子一样。

但是,这会有点慢,因为现在jQuery必须监视每个鼠标移动,以查看它是否发生在live()元素上。使用div绑定页面中当前div的hover() / mouseenter事件可能会更快,而不是leave - ness。如果你确实有动态添加的live元素,那么在将它们添加到文档时必须重新绑定。

更好:只使用CSS悬停。只有IE6才能使旧的div失败;如果你真的需要为那个浏览器的用户提供漂亮的悬停效果(哇!他们不值得,那些恶棍!)那么你只能为该浏览器添加后备脚本,例如:

:hover