2012-06-17 73 views
16

我使用jQuery在Web环境中开发。jQuery的触发器悬停在锚点

我想知道为什么

$("#a#trigger").trigger('mouseenter'); 
$("#a#trigger").trigger('hover'); 
$("#a#trigger").trigger('mouseover'); 

那些所有3不工作启动,我有一个悬停功能。

$(function() { 


     $('a#trigger').hover(function(e) { 
      $('div#pop-up').show(); 

      }, function() { 
      $('div#pop-up').hide(); 
     }); 

    }); 

     }); 

a#trigger是锚的名称,#pop-up是在我的网页div元素。

问题是我想将鼠标悬停在FullCalendar插件中的某些事件上,并且这些功能不起作用。 谢谢。

+6

不要在选择器的ID前面使用标记名,比单独使用ID的效率低 – charlietfl

回答

61

你是在正确的轨道上,这个问题是在选择额外的#,只是删除了第一哈希:

$("a#trigger").trigger('mouseenter'); 

注意,因为ID必须是唯一的,不需要指定元素类型,$('#trigger')更高效。

还要注意的是:

不赞成使用jQuery的1.8,在1.9中删除:用作字符串"mouseenter mouseleave"的简写名称"hover"。它为这两个事件附加一个事件处理程序,处理程序必须检查event.type以确定事件是mouseenter还是mouseleave。不要将"hover"伪事件名称与.hover()方法混淆,该方法接受一个或两个函数。

+5

经过25个小时的编程之后,就像地狱一样盲目,非常感谢。 它是Mouseenter的方式..不工作 @undefined –

+0

@OriGavrielRefael欢迎:) – undefined

+0

我不知道为什么我以某种方式使用'trigger(mouseenter)'失败,但最终通过编写' .hover'类并执行addClass('hover')'。 – Liber

8

你的jQuery选择器应该写成例如。

$('a#trigger'); 

代替$('#a#trigger');

在jQuery中的选择器#匹配的ID。在这种情况下,trigger是一个id,但a是一个HTML元素,不需要前缀。

您的最终代码如下:

$("a#trigger").trigger('mouseenter'); 
$("a#trigger").trigger('hover'); 
$("a#trigger").trigger('mouseover');