2011-11-29 58 views
3

我在页面中有5个元素。 我已经选择他们使用类名称$('.class')jquery - 对任何事件执行效果

我想执行一个函数为那些选定的元素,而不考虑事件(点击或悬停或watever)。

例如:

$('.class').hover(function(){definition1}); 
$('.class').click(function(){definition1}); 

我不想具有2个独立的事件如上述图2,代替我想不论其悬停或点击事件要执行的功能。

+0

除了日志事件之外,您还可以在每个可能的事件上做什么?你真的想在每一个mousemove事件上运行javascript吗?我建议你分享你真正想要完成的事情,这样我们可以提供一个更合适的答案。 – jfriend00

回答

3
$('.class').bind('click mouseenter', function() { 
    // Go nuts. 
}); 

(如果使用jQuery> = 1.7,交换bind()on()。)

记住hover()的第二个参数是mouseleave的事件,你有没有在这里写东西。

如果要覆盖大多数事件,请传递'模糊焦点focusin focusout载入调整大小滚动卸载点击dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change选择提交keydown keypress keyup error'作为第一个参数。

您也可以尝试通过遍历以on开头的属性来检测它们,但它对我来说听起来太飘忽不定。

+0

谢谢亚历克斯,徘徊,我只是提到一个例子。但有没有办法做所有的事情,而不是一个接一个地提到它。像.ready()文件? –

+0

@KannanLg:查看编辑。 – alex

+3

@ KannanLg-想为* every *事件附加一个监听器是非常不寻常的。大多数元素至少有10个固有事件(点击,dblclick,mousedown,mouseup等),还有其他许多元素。如果你想为每个事件设置一个监听器,你将不得不按名称列出它们。 – RobG

0

如果你不想给exec的功能没有任何事件把它放在

$(function(){ 
    function test(){definition1} 
}); 

然后在HTML

<body onload="test();"> 
+0

我不认为这是OP的想法。 –

+0

是的。我会说我想要一个类似的。这里缺少的一件事是,我想选择元素并执行一个没有任何事件的操作。 所以,像... $('。class')。function(){} –

+0

我错误的理解了这个问题 – tmjam

2

绑定多个事件一个元素的jQuery 1.7及更高版本您可以通过以空格分隔事件名称来执行以下操作:

jQuery('.class').on('click hover mousenter mouseleave', function(event){ 
    // do what you need to do 
}); 

你可以在jsfiddle中看到。

但是:要小心,因为您可以轻松地将事件触发太多时间(超过必要且绰绰有余)。通过绑定如此多的事件,可能会不必要地调用某些事件(如上例所示,当鼠标光标离开元素时,代码将被触发两次)。