Jquery从字符串中搜索以查找元属性

时间:2013-06-15 14:21:57

标签: jquery

我有以下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 个答案:

答案 0 :(得分:2)

你做

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

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

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

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

答案 1 :(得分:1)

尝试使用parseHTML()清理HTML。有关详细信息,请Docs of $.parseHTML()。这将返回一个textNodes数组,其data选项包含您的字符串。

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

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

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

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

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

返回1.0

So here's a demo at jsFiddle

答案 2 :(得分: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()) ;

DEMO http://jsfiddle.net/mUrk2/

使用span而非meta。

答案 3 :(得分: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)