我有以下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.
你能告诉我我做错了什么吗?感谢您的回复。感谢。
答案 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
。
答案 2 :(得分:0)
您没有在任何地方附加html字符串。试试这种方式,
var s = '<meta termVersion="1.1">asd</meta>';
console.log($('<div />').html($('<div />').html(s).text()).find('meta').text()) ;
var d = '<span>asd</span>';
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)