从HTML字符串中的标记获取类

时间:2015-03-07 01:52:05

标签: javascript jquery html string

我有一串像这样的HTML

var html = "<html><head></head><body class='getMe'></body></html>";

我想获取body标签类,我尝试这样做。

$(html).filter("body").attr("class") 

$(html).find("body").attr("class");

但两种方法都返回undefined。有什么帮助吗?

3 个答案:

答案 0 :(得分:1)

尝试

var html = "<html><head></head><body class='getMe'></body></html>";
var className = $("<html />", {"html":html}).find("body")[0].className;
console.log(className);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>

答案 1 :(得分:1)

您不需要解析为html,而是尝试使用RegExp:

var html = "<html><head></head><body class='getMe'></body></html>";
var clazz = html.match(/body\sclass=['|"]([^'|"]*)['|"]/)[1]; //getMe

这里,String.match()给出了给定模式的字符串数组。 body\sclass=['|"]([^'|"]*)['|"]给出["body class='getMe'", "getMe"]。使用(),您可以抓住特定的群组。

还适用于多个类和其他属性:

var html = "<html><head></head><body class='getMe hey there' id='xyz' bgcolor='red'></body></html>";
var clazz = html.match(/body\sclass=['|"]([^'|"]*)['|"]/)[1]; //getMe hey there

被修改

为了获得属于以header-开头的body标签的类:

var html = "<html><head></head><body class='getMe header header-1 header-two test'></body></html>";
var headers = html.match(/body\sclass=['|"]([^'|"]*)['|"]/)[1].match(/(header\-\w+)/g);
//["header-1", "header-two"]

答案 2 :(得分:-3)

您是否尝试将其置于变量中?找不到&#34;&#34;

的标签
var MyClass = $(body).attr("class");

// or $(html).find(body).attr("class");