2012-05-31 3 views
0

У меня есть вход с большим количеством содержимого html. ищет функцию jquery для эффективной блокировки нежелательных элементов (просто элементов, но нужно сохранить содержимое), элементы для сохранения будут теми, которые я указываю. Также хотелось бы, чтобы функция легко настраивалась для добавления или удаления элементов, которые я не хочу. например: var tagsToRetain = "p, i, u, br";удалить нежелательные элементы html, сохранив его содержимое с помощью JQuery

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

$("span,h1,h2").each(function(){ 
$(this).replaceWith($(this).html()); 
});​ 

ответ

0

Если я вас правильно понял, вы хотите, чтобы определить, какие элементы должны не обрабатываться вашим .each() цикла. Если да, то используйте :not() selector или .not() method:

$("body *:not(p,i,u,br)").each(function(){ 
    $(this).replaceWith($(this).html()); 
});​ 

// OR: 
$("body *").not("p,i,u,br").each(function(){ 
    $(this).replaceWith($(this).html()); 
});​ 

// OR, encapsulated in a function with a clunky name: 

function stripElementsNotSpecified(tagsToRetain) { 
    $("body *").not(tagsToRetain).each(function(){ 
     $(this).replaceWith($(this).html()); 
    }); 
} 

stripElementsNotSpecified("p,i,u,br");​ 

Обратите внимание, что без "body *" части селекторных :not(p,i,u.br) часть будет выбрать HTML, головы, сценарий и т.д., элементы документа. С "body *" он выбирает только детей тела.

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