Как удалить оболочку тега noscript с помощью jquery?

Я хочу удалить тег noscript, который оборачивает изображение:

<a href="some_image.jpg">
 <noscript>
  <img src="some_image.jpg">
 </noscript>
</a>

Я попробовал unwrap(), но он не работает внутри noscript, затем я попробовал метод html():

$('a').html(function(index, oldhtml){
   return oldhtml.replace(/\<noscript\\?>/g, '');
});

Хотя тег удален, он создает строку вместо DOM:

<a href="some_image.jpg">
 "
  <img src="some_image.jpg">
 "
</a>

Как удалить оболочку тега noscript, сохранив элемент img нетронутым?


person Question Overflow    schedule 22.09.2013    source источник


Ответы (4)


Попробуйте что-нибудь вроде - на самом деле это очень грубый взлом

jQuery(function($){
    $('a:has(noscript)').html(function(){
        return $(this).find('noscript').text()
    })
})

Демонстрация: Fiddle

person Arun P Johny    schedule 22.09.2013

Вы можете заменить элемент его содержимым:

$('noscript').replaceWith(function() {
    return this.textContent || this.innerText;
    // return $('<div/>').html(this.innerHTML).text();
});

http://jsfiddle.net/x9Eaw/

person undefined    schedule 22.09.2013

Вы можете попробовать так:

var image=$('noscript').text();
$("noscript").remove();
$("a").append(image);

Демонстрация Fiddle

person Greenhorn    schedule 22.09.2013

Почему бы не оставить noscript как есть и добавить изображение самостоятельно?

$("noscript").each(function () {
    $('<img src="' + this.parentNode.href + '" />').appendTo(this.parentNode);
});

скрипка

person Andreas    schedule 22.09.2013
comment
Я думал об этом, но я не хочу повторять эти атрибуты в изображении. - person Question Overflow; 22.09.2013