2010-06-18 64 views

回答

16

尝试:

jQuery(html).attr('href'); 

或者,如果<a>标签是在HTML超过你的例子更深:

jQuery(html).find('a').attr('href'); 

jQuery()功能将转换HTML字符串转换为DOM对象,并返回一个jQuery对象包含他们为你。

+0

不错,简洁。也很好解释为什么'$(html)'业务的作品。 – 2010-06-18 22:47:55

+1

+1。只需要注意OP,我会避免使用“html”作为变量名称,因为jquery有一个叫做.html()的函数,它经常使用。 – womp 2010-06-18 22:59:27

+0

作为一个注意到其他人寻找这个,你也可以'jQuery(html).get(0).href'并使用香草javascript。 – 2010-06-19 02:00:20

1

你的代码看起来应该像做它的工作原理,只要你想:

var html = "<a href='http://path/to/file.pdf'>File</a>"; 
alert($(html).attr("href")) 
3

要解释为什么你的方法是行不通的 - 当你做jQuery("a",html),您正在搜索的上下文内的元素元素存储在HTML中。

目前唯一的内容是文件文本。例如,如果你的字符串被封装在一个div中,它就可以工作。 <div><a href='...'>File</a></div>


我假设你有一些其他的原因,创建一个jQuery对象。如果没有,并且你不想额外的开销,你可以使用正则表达式。

例子:http://jsfiddle.net/e3Gyc/

var html = "<a href='http://path/to/file.pdf'>File</a>"; 

var result = html.match(/href='([^']+)'/)[1]; 

否则,答案是gnarfDzida给都非常优秀。

+0

Ooo,一方面,'jQuery(“a”,html)'解释不工作是伟大的......另一方面,你* gasp *倡导解析HTML与RegExp ...冒险的举动 - +1 :) – gnarf 2010-06-19 01:48:03

+0

@gnarf - 感谢+。 :o)不,不主张。我太过于冷漠,不能成为倡导者。 ; o)只要说明一点,如果提取'href'是唯一的目的,那么你不一定需要创建一个jQuery对象。虽然不太可能。无可否认,这种解决方案的实用性很窄,充满了危险。 +1 backatcha。 – user113716 2010-06-19 02:02:57