2009-06-01 52 views
2

我有我認爲是一個簡單的選擇與jQuery更改段落上的一些文本。它完美的傳統方式,即jquery更改P的innerhtml不工作

document.getElementById('message_text').innerHTML = "hello"; 

但與jQuery它沒有。我已經檢查了$('#message_text')的值,果然我看到了這些項目。

$('#message_text').innerHTML = "hello"; 

我做錯了什麼?

任何人有任何想法?

回答

18

當你做這樣的事情$('#message_text')你有什麼沒有一個常規的DOM對象,但jQuery的包裹設置(即使在這種情況下,只能將一個元素。)如果你想訪問特定的DOM屬性,你可以這樣做:

$('#message_text')[0].innerHTML = 'whatever'; 
$('#message_text').get(0).innerHTML = 'whatever'; 

然而,這是沒有必要在這種情況下,jQuery有兩個功能做你想做什麼:

html()

$('#message_text').html('whatever'); 

text()

$('#message_text').text('whatever'); 

兩者之間的區別是,html()將允許HTML而text()會逃跑你傳遞給它的任何HTML標記。使用innerHTML手動操作HTML所需的一個。

+2

很高興給你一個完整的解釋,我刪除了我的簡單的,非解釋性的答案,因爲你的更好。 – 2009-06-01 18:08:51

5

$('#message_text').html('hello')

jQuery選擇返回一個數組,而不是一個DOM元素節點。

6

jQuery的功能$()沒有返回一個HTML元素對象getElementById()做但的jQuery對象。在那裏,您只需將html()方法等效爲innerHTML。所以:

$('#message_text').html('hello');