2010-02-28 67 views
11

我試圖操縱存儲在jQuery的變量中的HTML。在將變量寫入文檔之前,我想做這個操作。如何操作jQuery變量中的HTML?

所以,我有一個變量定義爲:

var sighting = "<div><span class="feed_name"></span></div>"; 

而且我想提出的 「Hello World」 的span元素。這是我不能得到部分的工作:

$(sighting).("span.feed_name").html(name); 

然後我寫了「瞄準」變量頁面:

$(#sightings).append(sighting); 

這使在HTML中瞄準可變進<div id="sightings"></div>元素在頁面上。

任何幫助將不勝感激!

感謝,

馬克

+3

'$(瞄準)( 「span.feed_name」)HTML(名稱)'甚至不合法句法。你會想'$(瞄準).find( 「span.feed_name」)。HTML(名稱)'。 – jpsimons 2010-02-28 19:15:44

回答

4

試試這個:需要

var sighting = "<div><span class=\"feed_name\"></span></div>", 
    $elem = $(sighting).find("span.feed_name").text("hello world").parent(); 
$("#sightings").append($elem); 

parent電話要回外div

+0

大聲笑,你第一次,甚至用相同的標題「試試這個:」:D(我的回答刪除) – Tronic 2010-02-28 18:29:27

+1

嗨,Gumbo,感謝您的幫助!我結束了與其他答案,但你的也有幫助。 - Mark – Mark 2010-02-28 19:17:32

11

我喜歡這種方法,你必須在元素的更多控制,因爲他們仍然爲對象,並因此更容易強迫進入功能。

sighting = document.createElement('div'); 

然後你就可以操作,就好像它已經是DOM

$(sighting).addClass("feed_name").html(name); 
$(sighting).appendTo("#sighting"); 

編輯

嗯的一部分...看來我誤解你的問題。我仍然希望使用createElement()函數來製作元素。

sighting = document.createElement('div'); 
sighting_contents = document.createElement('span'); 

$(sighting_contents).addClass("feed_name").html(name); 
$(sighting).append(sighting_contents); 
$(sighting).appendTo("#sightings"); 

有點冗長,但你可以串最後三成一個長行,如果你想......我想,這是更具可讀性,並最終給你更多的控制,因爲在技術上你不應該寫在你的js中有一堆HTML,你可以創建這些元素並追加它們,但就編寫大塊標記而言,我認爲將這些元素創建爲這樣的對象會給你更多的靈活性。

您還可以將事件加入這樣的元素在一個更簡單的方法:。

$(sighting).bind("click", function(event) { 
    $(this).fadeOut(); 
}); 
+0

嗨Joseph, 感謝您的回覆!這聽起來像我想要的方法,但是當我寫: sighting1 =文檔。createElement(「

」); 我得到js錯誤: 錯誤:未捕獲的異常:[異常...「字符串包含無效字符」代碼:「5」nsresult:「0x80530005(NS_ERROR_DOM_INVALID_CHARACTER_ERR)」location:「http://www.myurl .com行:47「] 任何想法這可能是從什麼? 謝謝, 馬克 – Mark 2010-02-28 18:58:03

+0

是的,這是預期的錯誤。你不需要在函數中的HTML只是做: 'document.createElement('div');' 你不能把HTML放入該函數,只是你想創建的元素的標記。 – 2010-02-28 18:59:24

+0

哈哈,我明白了。有效!謝謝你的幫助。 – Mark 2010-02-28 19:16:38