1. ホーム
  2. jquery

[解決済み] jQuery .close()に似ているが、子孫をたどるのか?

2022-06-20 10:22:50

質問

のような関数はありますか? jQuery .closest() のような関数がありますが、子孫を走査して最も近いものだけを返すのでしょうか?

があることは知っています。 .find() 関数があることは知っていますが、それは可能なすべてのマッチを返し、最も近いものではありません。

編集してください。

以下は、「最も近い」の定義です。 (少なくとも私にとっては) :

まず、すべての子供が巡回され、次に各個人の子供が巡回されます。

以下に示す例では id='2' が最も近い .closest の子孫であり id="find-my-closest-descendant"

<div id="find-my-closest-descendant">
    <div>
        <div class="closest" Id='1'></div>
    </div>
    <div class="closest" Id='2'></div>
</div>

ご覧ください JSfiddleのリンク .

どのように解決するのですか?

の定義によると closest の定義に従って、私は以下のプラグインを書きました。

(function($) {
    $.fn.closest_descendent = function(filter) {
        var $found = $(),
            $currentSet = this; // Current place
        while ($currentSet.length) {
            $found = $currentSet.filter(filter);
            if ($found.length) break;  // At least one match: break loop
            // Get all children of the current set
            $currentSet = $currentSet.children();
        }
        return $found.first(); // Return first match of the collection
    }    
})(jQuery);