如何使用另一个onclick事件触发包含在一个事件中的代码

时间:2012-12-30 01:57:25

标签: javascript jquery

将此代码包含在HOVER事件中......

$("#div_ID").hover(function() {
  // perform stuff here...
}
);

当我使用ONCLICK事件点击链接时,我想触发上述内容......

$("anchor_ID").click (function() {
 $("div_ID").trigger('hover'); // Not sure if this is even correct
}
);

虽然不行。我怎么能做到这一点?它甚至可能吗? 仅在FF v16,IE8和GC v23上使用JQuery

2 个答案:

答案 0 :(得分:2)

这个怎么样:

var dosomething = function() {
    // perform the stuff here
}

$('#div_ID').hover(dosomething);
$('anchor_ID').click(dosomething);

但如果您开始使用.trigger,则问题可能是您忘记在#之前加入div_ID。并将hover更改为mouseenter(jQuery中的“悬停”功能只是“mouseenter”的快捷方式 - 归功于@FabrícioMatté以获取该功能)即:

//change this:
$('div_ID').trigger('hover');
//To this:
$('#div_ID').trigger('mouseenter');

同样适用于anchor_ID,但除非您发布HTML,否则我不会知道。

更新:来自@FabrícioMatté的另一个建议:this内的dosomething关键字在您如上所示调用它时可能会有点混乱,所以请注意它。 this关键字与使用.trigger的工作方式不同,所以它只是一个抬头....

答案 1 :(得分:1)

hover不是一个事件,所以你不能trigger它。 .hover()只是附加mouseentermouseleave处理程序的简写。

$("#anchor_ID").click(function() {
    $("#div_ID").trigger('mouseenter');
});

Fiddle

请注意,.hover传递单个参数时,会将该函数附加到mouseentermouseleave,以便您可以触发其中任何一个。
如果您打算仅在用户将鼠标移到hover上方时才执行处理程序,我建议您使用mouseenter而不是div附加处理程序。