2011-11-29 34 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中看到。

但是:要小心,因爲您可以輕鬆地將事件觸發太多時間(超過必要且綽綽有餘)。通過綁定如此多的事件,可能會不必要地調用某些事件(如上例所示,當鼠標光標離開元素時,代碼將被觸發兩次)。