更改p的innerhtml的jquery无法正常工作

mar*_*ith 3 javascript jquery

我有一个我认为是一个简单的选择与jQuery来改变段落上的一些文本.它完美地传统方式,即

document.getElementById('message_text').innerHTML = "hello";
Run Code Online (Sandbox Code Playgroud)

但是使用jQuery却没有.我已经检查了价值,$('#message_text')当然我看到了这些物品.

$('#message_text').innerHTML = "hello";
Run Code Online (Sandbox Code Playgroud)

难道我做错了什么?

有人有主意吗?

Pao*_*ino 20

当你做你喜欢的东西时,$('#message_text')没有常规的DOM对象,而是jQuery包装集(即使在这种情况下它只是一个元素.)如果你想访问特定的DOM属性,你可以这样做:

$('#message_text')[0].innerHTML = 'whatever';
$('#message_text').get(0).innerHTML = 'whatever';
Run Code Online (Sandbox Code Playgroud)

但是,在这种情况下,这不是必需的,因为jQuery有两个函数可以执行您想要的操作:

html():

$('#message_text').html('whatever');
Run Code Online (Sandbox Code Playgroud)

text():

$('#message_text').text('whatever');
Run Code Online (Sandbox Code Playgroud)

两者之间的区别在于html()它将允许HTML,同时text()将转义传递给它的任何HTML标记.使用你需要的那个而不是用innerHTML手动操作HTML.

  • 很高兴你给出一个完整的解释,我删除了我更简单,不解释的答案,因为你的更好. (2认同)

Gum*_*mbo 6

jQuery函数$()没有返回一个HTML元素的物体,像getElementById()做而是一个jQuery的对象.在那里你只有html()相同的方法innerHTML.所以:

$('#message_text').html('hello');
Run Code Online (Sandbox Code Playgroud)


Eug*_*zov 5

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

jQuery选择器返回一个数组,而不是DOM Element节点.