Является ли привязка событием click для документирования лучше, чем привязка его к телу?

Вопрос просто между

$("body").click(function(e){}); vs $(document).click(function(e){});

который является более эффективным или целесообразным? Или это зависит от ситуации?

Честно говоря, я использовал их как взаимозаменяемо, так и не видел никаких различий, пока не стал любопытным и задал этот вопрос здесь.

Ответ 1

Если высота страницы меньше высоты окна просмотра, тогда щелчок по окну просмотра под страницей не вызовет обработчик кликов 'body', а только обработчик кликов document.

Живая демонстрация: http://jsfiddle.net/simevidas/ZVgDC/

В демоверсии попробуйте щелкнуть по области под текстом, и вы увидите, что выполняется только обработчик кликов document.

Следовательно, лучше привязать обработчик к объекту Document.

Ответ 2

Привязка к document кажется стандартной практикой, поэтому я бы придерживался этого.

document также намного быстрее.

Ответ 3

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

Ответ 4

Также тело может не охватывать все видимое окно (некоторые сумасшедшие стили вызывают это)! Я не знаю, по-прежнему ли вы получите событие click. Поэтому лучше привяжите его к document.

Ответ 5

Я бы так же относился к этому в DOM.

Если я привязываюсь к <table>, то он находится на более высоком уровне, чем <tr> внутри него. Если я привяжусь к <tr>, то он будет ниже, чем <table>. Это работает так же, как для документа (выше) и <body> (ниже) просто вопрос уровня, на мой взгляд.

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