16

ユーザーがイベントをバインドすることもあれば、オンにすることもあり$('body')ます$(document)

$(document).on('click', someAction);

$('body').on('click', someAction);

どちらかを優先する理由はありますか?

4

3 に答える 3

8

$(document)私にとって、イベントをバインドしてバインドしない主な理由は 1 つあります$('body')

domReadyを待つ必要はありません(ドキュメントは他の何よりも先に利用可能です)

于 2012-12-04T08:34:41.187 に答える
6

簡単な答えは、おそらくそうではありません。

誰かがそれをしている理由は、彼がマークアップでグローバルにイベントをキャッチする必要があるということです。<body>タグはの直接の兄弟として続く必要があるため、<html>すべてのイベントバブリングフェーズはそこで終了します。

<html>
    <body>
         <div>
         </div>

上のすべてのクリックイベントは、同様<div>にバブルアップします(手動で停止しない場合)。したがって、そのユースケースでは、違いはありません。<body><html>

于 2012-12-03T16:16:07.193 に答える
2

速度には多少の違いがありますが、それ以外はあまりありません。誰かがすでに作業を行っているので、リンクを示します。

http://jsperf.com/jquery-body-vs-document-body-selector

ただし、そこにあるコードと直接関係がある場合、大きな違いが1つあります。$(document).on('click', someAction);ドキュメント表示領域のどこにでも影響$('body').on('click', someAction);しますが、本体が独立した高さと幅を持つことができるほど多くの領域には影響しない可能性があります。

于 2012-12-03T16:18:07.093 に答える