使用jQuery可以“拦截”两个动作吗?

时间:2013-09-23 18:26:01

标签: jquery

奇怪的标题......我有这个功能:

$('#text').keyup(function() {
    // stuff here
}

我会在“其他事件”中的“东西”中“重复使用”我的所有代码

$('#previousSms').change(function() {
    // same stuff here
}

有一个类似的场景(伪代码)

if
 $('#previousSms').change OR $('#text').keyup

impossibile?

谢谢!

4 个答案:

答案 0 :(得分:4)

您可以使用on()

$('#text, #previousSms').on('keyup change', function(){
    // do stuff here
});

另一方面,如果您需要根据特定元素的事件使用相同的函数:

$('selectorForCommonAncestor').on('keyup change', '#text, #previousSms', function(e){
    var eName = e.type,
        elID = this.id;
    if (eName == 'keyup' && elID == 'text') {
        // do stuff for keyup event on #text
    }
    else if (eName == 'change' && elID == 'previousSms') {
        // do stuff for change event on #previousSms
    }
});

参考文献:

答案 1 :(得分:1)

定义一个函数并将其用于每个事件:

$('#text').keyup(myFunction);
$('#previousSms').change(myFunction);

function myFunction(e) {
    //do stuff 
}

答案 2 :(得分:1)

当然可以。

function something (event) { /* stuff */ }

$('#text').keyup(something);
$('#previousSms').change(something);

答案 3 :(得分:1)

完美的功能。

$('#text').keyup(doStuff);

$('#previousSms').change(doStuff);

function doStuff(){
//same stuff
}