5

リストに次のマークアップがあります (同じリスト形式が繰り返されます)。

    <li class="item">
        <div class="outer">
            <p>Some text</p>
            <div class="inner">Some div text</div>
        </div>
        <a class="link" href="#">Link</a>
    </li>

a.link を各リスト項目の p と div.inner の間に移動したいと考えています。

次のスクリプトを使用しています。

    $("li.item a.link").each(function() {
        $(this).closest("div.inner").before(this);
    }); 

しかし、「$(this).closest は関数ではありません」というエラーが表示されます。

なぜ .closest() が機能しないのですか...頻繁に推奨されているようです。これを達成する別の方法はありますか?

どうもありがとう。

4

1 に答える 1

6

試す -

$("li.item a.link").each(function() {
    $(this).closest('li').find(".inner").before(this);
});

これは、closestうまくいかない場合にも機能します-

$("li.item a.link").each(function() {
    $(this).parent('li').find(".inner").before(this);
});  

デモ - http://jsfiddle.net/MkD8j/2/

どちらも、最も近い親の 'li' 要素を見つけてから、それを検索して 'inner' div 要素を探します。元のコードは、closest親要素を見つける関数を使用して「div.inner」要素を検索していました。「div.inner」要素はリンクの兄弟であるため、何も見つかりませんでした。

于 2011-11-14T14:15:47.450 に答える