2013-04-22 3 views
4

В некоторых случаях и по причинам, выходящим за рамки этого вопроса, привязки повторяются. Вот пример ДИВ:jQuery - Удаление всех якорных меток с определенным классом из 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); 
}); 

Я думал, что линия удалить() будет выбрать все якоря теги с класс «businessAnchor», но это не так.

Как вы можете видеть, я попробовал функцию each(), но это не сработало. Я не уверен, что это потому, что я не реализовал его должным образом или по какой-то другой причине.

+0

Я думаю, что вы должны пытаться остановить сценарий от повторения, а не просто удалить их. Использование '.remove()' * должно * удалить все элементы в объекте jQuery, возможно, попробуйте положить его * после *, вы добавили элемент? – Bill

+0

'$ (this) .find ('a.businessAnchor'). Remove();' – undefined

+0

где id? ваш вызов в '# businessListings', но его не в html, который вы предоставили –

ответ

7

Попробуйте это:

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

Так, из разметки, кажется, что a.businessAnchor являются прямым потомком DIV, так что вы можете сделать это слишком:

$(this).children('a.businessAnchor').remove(); 
+1

Это сделал трюк, Палаш! Благодаря! Я буду отмечать это как ответ, как только смогу (сказал, что я должен ждать 10 минут, чтобы отметить как ответ). – marky

Смежные вопросы