jQuery选择器与字符串对象无法正常工作

时间:2013-07-16 22:22:52

标签: javascript jquery html string

var theHTML = '<html><head><title>Hi</title><link rel="apple-icon-touch-precomposed" href="icon.jpg" /></head><body></body></html>';
alert($(theHTML).find('link[rel="apple-icon-touch-precomposed"]').attr('href'));

警告“未定义”。我希望它返回“icon.jpg”。有什么问题?

4 个答案:

答案 0 :(得分:3)

试试这个:

alert($(theHTML).filter('link[rel="apple-icon-touch-precomposed"]').attr('href'));

即,使用.filter()代替.find()

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

如果你做了console.log($(theHTML)),你会明白为什么。

答案 1 :(得分:3)

在选择HTML时,您需要使用.filter()而不是.find()

JSFiddle

答案 2 :(得分:1)

我不知道你想要的是什么,但是如果你使用 filter() 而不是find()它会按你的意愿工作:

var theHTML = '<html><head><title>Hi</title><link rel="apple-icon-touch-precomposed" href="icon.jpg" /></head><body></body></html>';
alert($(theHTML).filter('link[rel="apple-icon-touch-precomposed"]').attr('href'));

JSFiddle Demo

答案 3 :(得分:0)

我不确定您是否可以使用.find,我必须阅读有关它的API。但是,您可以尝试.prop('href')而不是.attr('href')。如果这不起作用,我还建议在*之后使用= link[rel=*"apple-icon-touch-precomposed"]