Является ли привязка событием 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 к самому высокому элементу, тогда привязывайтесь к документу.