2009-12-01 59 views
0

我有以下代碼:Jquery的綁定事件

$('#form_field, #button').bind('change click', function() { 
// take action 
}); 

它工作正常。然而,當'變形'用於'#form_field'和'點擊'用於'#button'(而不是'點擊'用於'#form_field')時,我想觸發相同的動作。

我知道,可以使用下面的代碼來完成:

$('#form_field').bind('change', function() { 
// take action 
}); 

$('#button').bind('click', function() { 
// take action 
}); 

不過,我不想再重複所有的功能是(//採取行動)中的代碼。這看起來無效,每次我對它進行更改時,都需要進行兩次編輯。

任何想法?

在此先感謝

回答

12

如何:

var myCoolFunction = function() { 
    // take action 
}; 
$('#form_field').bind('change', myCoolFunction); 
$('#button').bind('click', myCoolFunction); 

+1

爲什麼不U(和尼克尖頂他的答案),不要使用'$( '#按鈕')點擊(myCoolFunction)'代替' $( '#鍵')。綁定( '點擊',myCoolFunction)'?與'$('#button')。bind('change',myCoolFunction)'和'$('#button')。change(myCoolFunction)''一樣。由於我是JQuery新手:是否有特定的原因? 〜克里斯 – cimnine 2009-12-01 13:54:54

+0

不是真的,它節省了1個函數調用..在jQuery中'$ .fn.click = function(fn){return fn? this.bind('click',fn):this.trigger('click'); };(儘管不是直接設置,請在jQuery-1.3.2.js中查看@ 3098行) – gnarf 2009-12-01 14:04:46

0

我不太確定這是一個偉大的想法,找到解決辦法。如果他們都做同樣的事情,只需爲他們調用所需的事件。

3

這應該做的伎倆:

$('#form_field').bind('change', takeAction); 

$('#button').bind('click', takeAction); 

function takeAction() { 
    //take action 
};