2013-09-17 2 views
1

Я хочу, чтобы удалить оба диапазон метки, используя Jquery из следующего кода Поскольку DIV является потомок пролета он даст ошибки в w3validators:удалить родительский тег span с помощью jquery?

<td class="col-1 col-first"> 
    **<span> 
    <span>** 
    <div class="user-picture"> 
    <a href="https://stackoverflow.com/users/shoprite-mp" title="View user profile."> 
    <img typeof="foaf:Image" src="http://locationbasedmedia.co.za/sites/default/files/styles/thumbnail/public/pictures/picture-580-1379344365.jpg" alt="Shoprite Mp's picture" title="Shoprite Mp's picture"/> 
    </a> 
    </div> 
    **</span> 
    </span>** 
    </td> 
+2

, так как это ошибка проверки правильности. Я думаю, вам придется внести изменения в разметку, не используя скрипт –

+0

Вы не можете использовать скрипты для исправления ошибок проверки. HTML-код, переданный в браузер, должен быть правильным. –

+0

Нет правильного решения для создания скриптов; вам нужно исправить вашу разметку html. –

ответ

3

использование

$(".user-picture").unwrap(); 
$(".user-picture").unwrap(); 

Используются разворачивать в два раза, чтобы удалить как родительские промежутки и сохранить внутреннюю структуру.

+0

Не нужно делать запрос DOM дважды, просто '$ (". User-picture "). Unwrap(). Unwrap();' работает. Вероятно, вы думаете о необычном возвратном значении 'wrap'. –

+0

решает проблему валидатора ... он удалит элементы span, но цель вопроса - сделать его действительной страницей html. –

+0

Это не работает. когда мы нажимаем на источник просмотра в браузере, тогда он не будет отражен там ... Это отразится только на firebug .. –

0

Другим решением было бы это:

$('td').click(function() { 
    var content = $('.user-picture', this).detach(); 
    $(this).append(content); 
    $('span', this).remove()l 
}); 

unwrap прекрасно работает для вашего сценария, но иногда вы хотите, чтобы переместить .user-изображение вокруг немного больше, чем просто два уровня, detach помогает с этим сохраняя объект (включая его атрибуты и события) неповрежденными.

+0

Это не работает. когда мы нажимаем на источник просмотра в браузере, тогда он не будет отражен там –

+0

Конечно, он не будет отражен в источнике просмотра. НЕТ изменений, которые вы когда-либо делали в JavaScript, будет там, потому что источник не меняется - только объектная модель документа (DOM). Если вы хотите пройти проверку W3C, вам нужно будет написать допустимую разметку - вы не можете использовать JavaScript для прохождения этой проверки. – Tigraine

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