2014-03-05 3 views
0

Скажем, у меня есть следующий JavaScript:Как я могу привязать и развязать уникальные прослушиватели событий к одному и тому же объекту?

$.each(idArray, function (index, value) { 
    $('#'+value).on('mouseenter', function(event) { 
     showTooltip(); 
     $(document).on('click', function (event) { 
      if(!$(event.target).is('#'+value)) { 
       hideTooltip(); 
       //remove this listener 
      } 
     }); 
    }); 
}); 

Как я могу удалить каждый «щелчок» слушателя после его уволили, и Есть ли способ, чтобы однозначно идентифицировать их и удалить их из другого места? Очевидно, я не могу отменить «щелчок» по элементу документа.

ответ

2

Для этого вы можете использовать event.namespace.

$.each(idArray, function (index, value) { 
    $('#' + value).on('mouseenter', function (event) { 
     showTooltip(); 
     $(document).on('click.tooltip', function (event) { 
      if (!$(event.target).is('#' + value)) { 
       hideTooltip(); 
       //remove this listener 
       $(this).off('click.tooltip'); 
      } 
     }); 
    }); 
}); 
1
$(document).on('click', function handlerName(event) { 
    if(!$(event.target).is('#'+value)) { 
     hideTooltip(); 
     $(this).off('click', handlerName); 
    } 
}); 

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

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