2009-12-01 100 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 
};