Повторное использование кода между различными обработчиками событий

0

У меня есть один блок кода, который я хочу вызывать в разных сценариях при нажатии кнопки, в зависимости от того, является ли событие прямым или делегировано.

Но при изменении кода on него он работает только частично.

У меня есть один код:

$(document).on('click','.selected-option',function(event){
//lot of code

Я хочу использовать:

$('.selected-option').click(function(event){ //lots of code  }

Я хочу использовать это вместе:

if (some condition)
{
    $(document).on('click','.selected-option',function(event){
}
else   
{
    $('.selected-option').click(function(event){
}

и хотите использовать тот же код.

  • 2
    Разве эти две строки не присоединяют слушателя click к .selected-option ? Если так, то почему бы не поместить условие в вашу функцию?
Теги:

3 ответа

7
Лучший ответ

Вам не нужно использовать анонимные функции для обработки событий. Просто напишите регулярную функцию:

function handleClick(event) {
  // lots of code
}

Затем привяжите функцию к количеству событий, которые вы хотите:

if (some condition) {
  $(document).on('click','.selected-option', handleClick);  
else {
  $('.selected-option').click(handleClick);
}
0
var testfunction = function(currentObj){
  // your code here
}   

 if (some condition)
  {
      $(document).on('click','.selected-option',function(event){
          testfunction($(this));  
      });
  }
 else {
      $('.selected-option').click(function(event){
          testfunction($(this));  
       });
  }
-2

определить функцию и выполнить задание;

var funCalled = function(){
    //your detailed actions
}

и называть его в разных условиях!

if (some condition) {
    $(document).on('click','.selected-option',function(event){
        funCalled()
    })
} else {
    $('.selected-option').click(function(event){
        funCalled()
    });
}

Ещё вопросы

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