изменение jquery innerhtml P не работает - PullRequest
3 голосов
/ 01 июня 2009

У меня есть то, что я считаю простым выбором с помощью jQuery, чтобы изменить текст в абзаце. Он прекрасно работает традиционным способом, т.е.

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

Но с jQuery это не так. Я проверил значения $('#message_text') и, конечно же, вижу элементы.

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

Я что-то не так делаю?

У кого-нибудь есть идеи?

Ответы [ 3 ]

20 голосов
/ 01 июня 2009

Когда вы делаете что-то вроде $('#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-теги, которые вы передаете ему. Используйте тот, который вам нужен, вместо ручного управления HTML с помощью innerHTML.

6 голосов
/ 01 июня 2009

Функция jQuery $() не возвращает объект HTMLElement , как getElementById(), но объект jQuery . И у вас просто есть метод html(), эквивалентный innerHTML. Итак:

$('#message_text').html('hello');
5 голосов
/ 01 июня 2009

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

Селектор jQuery возвращает массив, а не узел элемента DOM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...