Я заметил странное поведение функции live()
в jQuery:
<a href="#" id="normal">normal</a>
<a href="#" id="live">live</a>
$('#normal').click(clickHandler);
$('#live').live('click', clickHandler);
function clickHandler() {
alert("Clicked");
return false;
}
Это прекрасно и денди, пока вы не щелкаете правой кнопкой мыши по "живой" ссылке и не запускаете обработчик, а затем не показываете контекстное меню. Обработчик событий не запускается вообще (как и ожидалось) по "нормальной" ссылке.
Мне удалось обойти это, изменив обработчик на это:
function clickHandler(e) {
if (e.button != 0) return true;
// normal handler code here
return false;
}
Но это действительно раздражает, чтобы добавить это ко всем обработчикам событий. Есть ли лучший способ, чтобы обработчики событий запускались только как обычные обработчики кликов?