这段jQuery代码有什么问题?

时间:2010-05-12 15:54:20

标签: jquery

我刚刚在jQuery中发现了直播事件。

我正在尝试。我写了一个小片段来将鼠标悬停在表单中的提交按钮上:

jQuery("form img.submit_btn").live('hover', function(){
    (
      function () {
        jQuery(this).css('cursor','pointer');
      },
      function () {
        jQuery(this).css('cursor','auto');
      }
    );
});

然而,它没有效果。我错过了什么吗?

[编辑]

我刚才注意到这种行为可以通过CSS轻松实现。也许那时,我上面给出的例子太简单了。然而,基本问题仍然是如何使用“实时”调用来绑定悬停事件(所以我可以做一些更复杂的事情 - 例如动画等,这不能仅使用CSS来完成)

3 个答案:

答案 0 :(得分:1)

这似乎有点多余,只需使用CSS来定义悬停状态以使用指针光标而不是手。

form img.submit_btn:hover {
   cursor: default;
}

答案 1 :(得分:1)

我认为.live()更像.bind(),而不是事件方法。所以,这里的问题是双重的。首先,上面似乎期望作为事件处理程序传递的函数返回您作为函数结果列出的两个函数,但它不起作用。你需要一个return关键字。

更重要的是,如果你将hover传递给live,你必须基本上做一个分叉事件处理程序。从jQuery示例:

$('.hoverme').live('mouseover mouseout', function(event) {
  if (event.type == 'mouseover') {
    // do something on mouseover
  } else {
    // do something on mouseout
  }
});

jQuery 1.4.1使'hover'映射到'mouseenter mouseleave',所以你可以这样做:

$('.hoverme').live('hover', function(event) {
  if (event.type == 'mouseenter') {
    $(this).css('cursor','pointer');
  } else {
    $(this).css('cursor','auto');
  }
});
然而,这是为了更复杂的事情。我同意Lazarus的观点,认为CSS是改变指针的方法;我只是假设你想做一些更有趣的事情,这只是一个实验。

答案 2 :(得分:0)

你可以这样做:

$('form img.submit_btn').mouseover(function() {
    jQuery(this).css('cursor','pointer');
});
$('form img.submit_btn').mouseout(function() {
    jQuery(this).css('cursor','auto');
});

OR

$('form img.submit_btn').mouseover(function() {
    jQuery(this).css('cursor','pointer');
  }).mouseout(function(){
    jQuery(this).css('cursor','auto');
});

祝你好运