2010-09-20 63 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") 
相關問題