Для меня существует главным образом одна причина для привязки событий на $(document), а не к $('body'):
не нужно ждать domReady (документ доступен до всего еще)
Ответ 2
Короткий ответ скорее всего, нет, не совсем.
Причина, по которой кто-то делает это, всегда должна заключаться в том, что он должен поймать событие по всему миру в своей разметке. Поскольку тег <body> должен следовать как прямой sibling на <html>, все фазы пузырьков событий закончится там.
<html>
<body>
<div>
</div>
Каждое событие click на <div> будет сбрасываться до <body>, а также <html> (если не остановить вручную). Так что для этого usecase это не должно иметь никакого значения.
Ответ 3
Есть некоторая разница в скорости, не намного больше. Кто-то уже выполнил эту работу, поэтому я просто укажу вам ссылку.
Однако в прямом отношении к вашему коду есть одно существенное различие. $(document).on('click', someAction); будет влиять в любом месте области просмотра документа, тогда как $('body').on('click', someAction); Не может влиять на столько же площади, сколько тело может иметь независимую высоту и ширину.