2010-08-05 95 views
0

有什麼辦法可以爲頁面上的不同事件執行相同的代碼嗎?JQuery爲多個事件(例如:懸停和點擊事件)相同的功能

$('.class1').hover(function() { 
    some_function(); 
}); 

$('.class1').click(function() { 
    some_function(); 
}); 

,而不是做一些事情,如:

$('.class1').click.hover(function() { 
    some_function(); 
}); 
+0

請重新考慮您的問題的語法錯誤,請。 – simplyharsh 2010-08-05 10:00:10

+0

[jquery combine event functions]的可能重複(http://stackoverflow.com/questions/3279251/jquery-combine-event-functions) – jAndy 2010-08-05 10:01:51

+0

這些不是不同的元素,而是不同的事件。 – 2010-08-05 10:03:02

回答

5

雖然bind是去,如果你想在同一點附加的事件處理程序的方式你的代碼使用相同的選擇器,如果你想在不同的點附上它們或者使用不同的選擇器,你總是可以使用一個命名的函數,而不是匿名的一個:

function someWrappingFunction() { 
    some_function(); 
} 

$('.class1').hover(someWrappingFunction); 

$('.class1, .anotherClass').click(someWrappingFunction); 
+0

優秀。謝謝。另請注意,如果使用'$(document).ready(function(){// event handlers});',則不需要包裝函數。只是一個功能。 – khaverim 2014-05-17 01:35:24

11

使用bind()

$('.class1').bind("click hover", function() { 
    some_function(); 
});