Удалить HTML-теги из строки, используя jQuery

У меня есть простая строка, например.

var s = "<p>Hello World!</p><p>By Mars</p>";

Как преобразовать s в объект jQuery? Моя цель - удалить <p> и </p> s. Я мог бы сделать это с помощью regex, но это скорее не рекомендуется.

Ответ 1

В простейшей форме (если я правильно понимаю):

var s = "<p>Hello World!</p><p>By Mars</p>";
var o = $(s);
var text = o.text();

Или вы можете использовать условный селектор с контекстом поиска:

// load string as object, wrapped in an outer container to use for search context
var o = $("<div><p>Hello World!</p><p>By Mars</p></div>");

// sets the context to only look within o; otherwise, this will return all P tags
var tags = $("P", o); 

tags.each(function(){
    var tag = $(this); // get a jQuery object for the tag
    // do something with the contents of the tag
});

Если вы разбираете большое количество HTML (например, интерпретируете результаты скрипирования экрана), используйте библиотеку разбора HTML на стороне сервера, а не jQuery (тонны сообщений здесь о разборе HTML).

Ответ 2

Чтобы получить все строки, используйте

var s = "<p>Hello World!</p><p>By Mars</p>";
var result = "";
$.each($(s), function(i){
    result += " " + $(this).html();
});

Ответ 3

если вы не хотите регулярное выражение, почему бы и не просто:

var s = "<p>Hello World!</p><p>By Mars</p>";
s = s.replace('<p>', '').replace('</p>', '');