不能使用.bind()来绑定悬停

时间:2010-11-06 00:27:17

标签: jquery

我尝试使用jQuery。在我尝试的时候,我发现我不能在.bind中使用悬停事件。我不知道出了什么问题。

$(document).ready(function(){
 $('.some-class').bind({
  hover: function(e) {
  // Hover event handler
   alert("hover");
  },
  click: function(e) {
  // Click event handler
   alert("click");
  },
  blur: function(e) {
  // Blur event handler
  }
 });
});

令人惊讶的是(至少对我而言)是悬停不起作用。其他人“点击”和“模糊”工作正常。

以下工作也没有任何问题。

$(".some-class").hover(function(){
     // stuff
})

也许我可以使用上面的代码。但不知道为什么会是一个很大的麻烦。那么任何想法?

谢谢!

2 个答案:

答案 0 :(得分:38)

在绑定对象时,您需要直接使用mouseentermouseleave事件(.hover()使用):

$(document).ready(function(){
 $('.some-class').bind({
  mouseenter: function(e) {
  // Hover event handler
   alert("hover");
  },
  mouseleave: function(e) {
  // Hover event handler
   alert("hover");
  },
  click: function(e) {
  // Click event handler
   alert("click");
  },
  blur: function(e) {
  // Blur event handler
  }
 });
});
jQuery事件代码中的

.hover() is defined specially here ...它不像.bind()之类的其他事件一样受支持,因为它不是一个事件,它只是一个函数帮助您绑定mouseentermouseleave事件。

答案 1 :(得分:3)

没有多大原因,但根本不在规范中。检查文档 - 悬停未列在可绑定事件中。

http://api.jquery.com/bind/