0
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

4 回答 4

3

尝试这个:

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

也就是说,使用.filter()而不是.find().

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

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

于 2013-07-16T22:26:24.477 回答
3

在这样的 HTML 上选择时,您需要使用.filter()not 。.find()

JSFiddle

于 2013-07-16T22:27:00.457 回答
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

于 2013-07-16T22:28:00.453 回答
0

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

于 2013-07-16T22:26:26.873 回答