2010-09-20 291 views
35

我正在寻找一种方法从包含HTML的字符串中获取HTML元素。是否有可能使用jQuery选择器来做到这一点?如何使用jQuery从字符串获取HTML元素

基本上我有一个JavaScript函数从服务器获取整个页面,但我只需要该页面的一个元素。

在此先感谢

+0

你能分享你的字符串的意思到底是什么,它是如何出现? – Sarfraz 2010-09-20 18:01:30

+0

你有什么不清楚的。该字符串是否包含单个元素的HTML代码,还是包含您想要获得的几个元素的代码? – Guffa 2010-09-20 18:05:44

回答

61

是的,您可以将字符串转换为元素,并从中选择元素。例如:

var elements = $(theHtmlString); 
var found = $('.FindMe', elements); 
+10

这被称为使用'元素'作为[**上下文**](http://api.jquery.com/jQuery/)。它使用[**。find()**](http://api.jquery.com/find/)在内部实现,因此等同于编写上述代码的方法是:'var found = elements.find('。 FindMe');' – 2010-09-20 19:55:19

+1

这个方法('$('selector',$('html string'))')在jQ中似乎不适用于我:1.6.2 – vol7ron 2011-08-10 13:46:51

+8

没想到发生了这种情况,因为正如你所说的那样使用'find()',而我需要它使用'最接近()',也许应该修改jQ。 **问题案例:**'('pre',$('

foo
bar
'));'。因为它使用只查看孩子的find,它永远不会找到任何'pre's。最简单的解决方案是添加一个换行。 – vol7ron 2011-08-10 14:05:08

17

只需将html文本包装到$函数中即可。 Like

$("<div>I want this element</div>") 
+1

我爱你告诉我这是可能的。这只是解决了我所有的问题。 – jamzsabb 2013-12-19 04:31:20

+1

非常感谢! – salmanhijazi 2015-05-12 16:54:34

8

如果被动态地从一个服务器加载页面然后就可以从加载的页面只是一个元件使用以下形式.load()

$(selectorWhereToShowNewData).load('pagePath selectorForElementFromNewData'); 

例如靶向:

$('#result').load('ajax/test.html #container'); 

其中:
#result是wh在当前页面上显示加载的页面部分
ajax/test.html是服务器请求发送到的URL
#container是您要显示的响应页面上的元素。只有这将被加载到元素#result。响应页面的其余部分将不会显示。

3

只需使用$ .filter

var html = "<div><span class='im-here'></span></div>" 
var found = $(html).filter(".im-here") 
相关问题