さて、私たちは皆、要素(および複数の要素)の外側をクリックしたときに要素(および複数の要素)を非表示にするこの方法を知っています(つまり、要素はフォーカスを失います):
$('document').on('click', function () { $(element).hide(); });
$(element).on('click', function (e) { e.stopPropagation(); /* ka-chow! */ });
つまり、ドキュメントに到達するクリックイベントは要素を非表示にしますが、要素内のクリックはドキュメントに伝播せず、クリックイベントを発生させません。
それはすべて素晴らしく、よく、間違いなくニュースではありません。
しかし、私は複雑でリッチなUIを持っています。このインターフェースには、この種の動作を必要とする多くの要素があります。そのことについては、各イベントで1つの要素だけを非表示にする必要があると仮定しましょう。非表示にしたい要素を1つ見つけるために、毎回ロット全体をトラバースする必要がありますか?
もしそうなら、それを行うための最も効率的な方法は何ですか?それらすべてに一意のクラス名を付けますか?または、各要素のクラス名/ ID / DOMインスタンスを配列に格納し、毎回ループしますか?それぞれの解決策は、私には他の解決策よりも非効率に聞こえます。
あなたならどうしますか?