1

我有以下 HTML 字符串。

var s= "<html><head><meta alias="Tc"/> <meta TermVersion="1.0" /><meta EffectiveDate="9/15/2013"/></head><body>These are sample T&C content...</body></html>

使用 Jquery 我想获取 TermVersion 值“1.0”和 EffectiveDate 值“9/15/2013”​​,我尝试了下面的返回对象但我无法获取值。

var a = $(s).find("meta [TermVersion]")
alert(a.val());  //returns undefined.

你能告诉我我做错了什么吗?感谢您的回复。谢谢。

4

4 回答 4

2

你做

$(s).find("meta [TermVersion]")

这将搜索具有 TermVersion 属性的子元素的元元素。但是,您不想要一个子元素,而是一个具有TermVersion 属性的元元素。

尝试省略 meta 和 TermVersion 之间的空格:

$(s).find("meta[TermVersion]")
于 2013-06-15T14:39:49.097 回答
1

尝试使用parseHTML()来清理您的 HTML。有关更多信息,请参阅 $.parseHTML() 的文档。这将返回一个数组,textNodesdata选项包含您的字符串。

var s = //your weird string    
var s = $.parseHTML(st)[0].data; //now s, has clean semantic HTML.

然后你可以将它设置在一个元素中,比如 a <div/>

var $el=$("<div/>").append(s)

然后从该元素中读取。现在下面的片段,

$el.find("[TermVersion]").attr("TermVersion")

返回1.0

所以这是 jsFiddle 的一个演示

于 2013-06-15T15:11:01.893 回答
0

您没有在任何地方附加 html 字符串。试试这个方法

var s = '&lt;meta termVersion="1.1"&gt;asd&lt;/meta&gt;';
console.log($('<div />').html($('<div />').html(s).text()).find('meta').text()) ;

var d = '&lt;span&gt;asd&lt;/span&gt;';
console.log($('<div />').html($('<div />').html(d).text()).find('span').text()) ;

演示 http://jsfiddle.net/mUrk2/

适用于跨度而不是元。

于 2013-06-15T14:31:22.470 回答
0

以有效字符串开头:

var s = '<html><head><meta alias="Tc"/> <meta TermVersion="1.0" /><meta EffectiveDate="9/15/2013"/></head><body>These are sample T&C content...</body></html>';

使用正则表达式会更容易:

var tv = s.match(/\d\.\d/)[0];
var ed = s.match(/\d{1,2}\/\d{1,2}\/\d{4}/)[0];

console.log(tv,ed)
于 2013-06-15T14:38:32.897 回答