Групповые события JS - PullRequest
       4

Групповые события JS

4 голосов
/ 04 ноября 2011

В настоящее время у меня есть четыре change() события, которые запускают точно такой же код (см. Ниже), поэтому мне интересно, есть ли способ сгруппировать эти события в одну строку, чтобы сохранить повторный код четыре раза?

Спасибо.

/** Check for a change to any of the search dropdowns */
$('#job-roles').change(function(e){
    letter = $_GET('staff_search');
    initiate_staff_search(letter, '<?php echo $staff_search_nonce; ?>', '<?php echo $name_search_type; ?>')
});
$('#ind-services').change(function(e){
    letter = $_GET('staff_search');
    initiate_staff_search(letter, '<?php echo $staff_search_nonce; ?>', '<?php echo $name_search_type; ?>')
});
$('#bus-services').change(function(e){
    letter = $_GET('staff_search');
    initiate_staff_search(letter, '<?php echo $staff_search_nonce; ?>', '<?php echo $name_search_type; ?>')
});
$('#indi-services').change(function(e){
    letter = $_GET('staff_search');
    initiate_staff_search(letter, '<?php echo $staff_search_nonce; ?>', '<?php echo $name_search_type; ?>')
});

Ответы [ 4 ]

5 голосов
/ 04 ноября 2011
$('#job-roles, #indi-services, #ind-services, #bus-services').change(function(e){
    letter = $_GET('staff_search');
    initiate_staff_search(letter, '<?php echo $staff_search_nonce; ?>', '<?php echo $name_search_type; ?>')
});
5 голосов
/ 04 ноября 2011

Вариант 1 : присвоить им одинаковый класс и прикрепить событие ко всем из них $('.someClass').change(...)

Вариант 2 : Группировать событие: $('#job-roles, #ind-services, ... ').change(...)

4 голосов
/ 04 ноября 2011

Использовать класс?

Дайте всем элементам класс скажем doSomething, а затем используйте следующий код для реализации слушателя:

$('.doSomething').change(function(e){
    letter = $_GET('staff_search');
    initiate_staff_search(letter, '<?php echo $staff_search_nonce; ?>', '<?php echo $name_search_type; ?>')
});
1 голос
/ 04 ноября 2011

Другой вариант, помимо уже описанных превосходных, просто:

(function(){
  function doCoolStuff(){
    letter = $_GET('staff_search');
    initiate_staff_search(letter, '<?php echo $staff_search_nonce; ?>', '<?php echo $name_search_type; ?>')
  }

  $('#job-roles').change(function(e){
    doCoolStuff();
  });
  $('#ind-services').change(function(e){
    doCoolStuff();
  });
  $('#bus-services').change(function(e){
    doCoolStuff();
  });
  $('#indi-services').change(function(e){
    doCoolStuff();
  });
}());
...