Можно ли с помощью jQuery «перехватить» два действия?

0

Странное название... У меня есть эта функция:

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

я бы "повторно использовал" весь мой код в "stuff here" также в другом случае

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

иметь аналогичный сценарий (псевдокод)

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

impossibile?

Спасибо!

Теги:

4 ответа

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
    }
});

Рекомендации:

  • 0
    Это то, что следует использовать, другие ответы работают, но просто глупо.
  • 1
    Я буду работать над этим решением. Спасибо! @VictorKilo: я не думаю, что другие ответят глупо. Другой ответ правильно сфокусирован на создании функции, и наверняка прав и другой;) Поэтому я уважаю всех людей, которые дали мне (правильный) ответ;)
Показать ещё 2 комментария
1

Определите функцию и используйте ее для каждого события:

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

function myFunction(e) {
    //do stuff 
}
1

Идеальная работа для функции.

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

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

function doStuff(){
//same stuff
}
1

Что вы можете.

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню