4

場合によっては、この質問の範囲を超える理由で、アンカーが繰り返されます。サンプルの div は次のとおりです。

<div class="unifyRepeat listing">
    <a class="businessAnchor" name="abcchildcareandlearningcenter"></a>
    <a class="businessAnchor" name="abcchildcareandlearningcenter"></a>
    <a class="businessAnchor" name="abcchildcareandlearningcenter"></a>
    <a class="businessAnchor mceItemAnchor" name="abcchildcareandlearningcenter"></a>
    <table class="tblListing">
        <tbody>
            <tr>
                <td>
                    <p class="bold">ABC Child Care and Learning Center</p>
                    <p>Jane Smith</p>
                    <p>(555) 555-1234</p>
                </td>
                <td>
                    <img alt="" src="images/ABCchildcare.jpg">
                </td>
                <td>
                </td>
            </tr>
        </tbody>
    </table>
    <a class="linkToTop" href="#top">^ Top</a>
</div>

アンカーを追加し、既存のアンカーを削除しようとする jQuery は次のとおりです。

$('#businessListings div.listing').each(function() {
    var name = $(this).find('p:first').text(),
        cleanedName = name.replace(/\W/g, '').toLowerCase();

    $('ul#businessListingLinks').append('<li><a href="#' + cleanedName + '">' + name + '</a>');

    var anchor = '<a class="businessAnchor" name="' + cleanedName + '"></a>';
    $(this).remove('a.businessAnchor');
    //$(this).each('a.businessAnchor').remove();
    $(this).prepend(anchor);
});

remove() 行はクラス「businessAnchor」を持つすべてのアンカータグを選択すると思っていましたが、そうではありません。

ご覧のとおり、 each() 関数を試しましたが、うまくいきませんでした。それが適切に実装しなかったためなのか、それとも他の理由なのかはわかりません。

4

1 に答える 1

7

これを試して:

$(this).find('a.businessAnchor').remove();

マークアップから、それa.businessAnchorは div の直接の子であるように見えるので、これも行うことができます:

$(this).children('a.businessAnchor').remove();
于 2013-04-22T12:20:53.687 に答える