Вероятно, это потому, что событие mouseup
распространяется вверх по дереву DOM, и вы применяете обработчик к каждому элементу в документе.Таким образом, он будет запускаться по первому элементу, а затем по родительскому элементу и так далее, пока не достигнет html
(или body
, я никогда не смогу вспомнить, не проверяя каждый раз).можно использовать:
$(document).ready(function () {
$("*").mouseup(function (e) {
e.stopPropagation();
renewSession();
});
});
Для предотвращения множественных вызовов.
Отредактировано в ответ на комментарий от thiag0:
Спасибо за быстрый ответ ... я пытаюсь вызывать renewSession () каждый раз, когда пользователь нажимает на сайт, чтобысохранить сеанс в живых.Это решение предотвращает многократное вызывание renewSession одним кликом, но предотвращает срабатывание фактического намерения клика пользователя.В любом случае, чтобы обойти это?
Вы можете просто нацелиться на элемент body
;до тех пор, пока события могут распространяться через дерево DOM (при условии, что вы не вызываете event.stopPropagation()
для элементов между элементами, по которым щелкнули (или 'mouseup'-ed)), то события будут распространяться на body
. Поэтому я бы предложил использовать:
$(document).ready(function () {
$("body").mouseup(function () {
renewSession();
});
});