サイトに検索機能付きのヘッダー バーがあります。私が実装した機能の 1 つは、結果を見つけて、それらを含むボックスのサイズを変更することです。
このヘッダーバーを持つ1つのページで、私の機能は完全に機能します:
$(".suggestionCategory").each(function() {
$(this).find(".suggestionCategoryName").outerHeight($(this).find(".suggestionCategoryValues").height());
});
しかし、別の場合、次のエラーメッセージが表示されます。
キャッチされていない TypeError: 未定義のプロパティ 'height' を読み取ることができません
壊して検査すると、次の結果がわかります
$(this).find(".suggestionCategoryValues")
非常に異なるものを返します。正しく機能するページで:
$(this).find(".suggestionCategoryValues")
次のように評価されます。
[
<div class="suggestionCategoryValues">…</div>
]
しかし、失敗したページでは次のように評価されます。
[
b.fn.b.init[1]
0: div.suggestionCategoryValues
context: div.suggestionCategoryValues
length: 1
__proto__: Object[0]
]
これはなぜで、何が間違っているのでしょうか?
編集:
最初に - 修正方法を知りたくありません - 既に回避策があります (内側の foreach を実行し、$(".suggestionCategoryValues").height() のサイズを合計します)。
しかし、私はなぜそれらが異なるのかについて興味があります。
HTML は同じだと思いますが、念のためにマークアップを投稿します。これは、「壊れた」ページのマークアップです。
<div id="searchSuggestionSelection" style="display: block; position: absolute; top: 3.9em; left: 324px; height: 343px;">
<div class="suggestionCategory">
<div class="suggestionCategoryName"><span>company</span></div>
<div class="suggestionCategoryValues">
<div data-actual-search="XXXX" class="suggestionValue first">XXXX</div>
<div data-actual-search="YYYY" class="suggestionValue">YYYY</div>
<div data-actual-search="ZZZZ" class="suggestionValue">ZZZZ</div>
</div>
</div>
<div class="suggestionCategory">
<div class="suggestionCategoryName"><span>contact</span></div>
<div class="suggestionCategoryValues">
<div data-actual-search="AAAA" class="suggestionValue first">AAAA</div>
<div data-actual-search="BBBB" class="suggestionValue">BBBB</div>
<div data-actual-search="CCCC" class="suggestionValue">CCCC</div>
<div data-actual-search="DDDD" class="suggestionValue">DDDD</div>
</div>
</div>
</div>
そして、これは「作業中」ページのマークアップです。
<div id="searchSuggestionSelection" style="display: block; position: absolute; top: 3.9em; left: 324px; height: 823px;">
<div class="suggestionCategory">
<div class="suggestionCategoryName" style="height: 316px;"><span>company</span></div>
<div class="suggestionCategoryValues">
<div data-actual-search="XXXX" class="suggestionValue first">XXXX</div>
<div data-actual-search="YYYY" class="suggestionValue">YYYY</div>
<div data-actual-search="ZZZZ" class="suggestionValue">ZZZZ</div>
</div>
</div>
<div class="suggestionCategory">
<div class="suggestionCategoryName" style="height: 512px;"><span>contact</span></div>
<div class="suggestionCategoryValues">
<div data-actual-search="AAAA" class="suggestionValue first">AAAA</div>
<div data-actual-search="BBBB" class="suggestionValue">BBBB</div>
<div data-actual-search="CCCC" class="suggestionValue">CCCC</div>
<div data-actual-search="DDDD" class="suggestionValue">DDDD</div>
</div>
</div>
</div>
ご覧のとおり、「作業中の」ページに高さが正常に適用されます。