2015-01-20 4 views
1

Мой jQuery начинает излишне длинным. Есть ли способ легко объединить эти 2 функции. Моя первая мысль - создать пользовательское событие из функции «вниз». Любые решения или предложения о том, что читать, будут оценены.Объединение 2 функций jQuery

$('th:nth-child(3):first').click(function() { 
    $('#dtSelect').val(2).change(); 
}); 

$('th:nth-child(3):first').keydown(function(event){  
    if(event.keyCode==13){ 
     $('#dtSelect').val(2).change(); 
    } 
}); 

ответ

3

Просто:

$('th:nth-child(3):first').on('change keydown', function(event) {  
    if(!event.keyCode || event.keyCode==13){ 
     $('#dtSelect').val(2).change(); 
    } 
}); 

Это будет срабатывать на обоих change и keydown событий, и будет вызывать только change() если event.keyCode не существует (change) или равна 13 (keydown).

+0

Это работает Мне просто нужно было изменить «изменение» на «щелчок». Спасибо. – user262430

+0

JamesDonnelly - Если у вас есть время, вы можете объяснить, что происходит в этой строке кода, чтобы я знал будущее »if (! Event.keyCode || event.keyCode == 13) {". в частности, что делают «!» и "||" делать. Я довольно новичок в этом. – user262430

+2

"!" означает не (true => false и наоборот) и "||" означает ИЛИ. См. Небольшое объяснение здесь: http://stackoverflow.com/questions/4576867/javascript-or-operator-with-a-undefinded-variable – Shelby115

2
function combined(event) { 
    if (typeof event === 'undefined' || event.keyCode==13) 
     $('#dtSelect').val(2).change(); 
} 

$('th:nth-child(3):first').click(combined).keydown(combined); 

хотя в этом случае я не думаю, что это стоит их комбинировать.

Смежные вопросы