Странное поведение в html-методе jQuery

Есть ли веская причина, по которой $ ("p"). Html (0) делает все абзацы пустыми, а не содержит символ '0'?

Вместо того, чтобы предполагать, что я нашел ошибку в jQuery, это, вероятно, недоразумение с моей стороны.

Ваша формулировка сбивает с толку. Может быть: "... вместо символа 0?" кстати, $ ('p'). html ('0') работает.

Jason Moore 24.11.2008 22:14

Да, я знаю, что это работает, только не то, что мне нужно. В любом случае нашел работу.

Allain Lalonde 24.11.2008 22:31
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
2
2 232
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Я предполагаю, что в какой-то момент он проверяет if (newContent == false) и не продолжает добавлять какой-либо контент? Я попытался посмотреть на источник, но немного заблудился ...

Я также предполагаю, что это не будет считаться ошибкой, поскольку функция вызывает строку, и если передается «0» (как строка), она работает, как ожидалось.

Обходной путь был бы сделать это:

var myNum = 0;
$('p').html('' + myNum);
Ответ принят как подходящий

jQuery принимает только строку в качестве аргумента для параметра val метода html(). Если вы передадите число, как вы, оно вызовет переопределение метода html(), которое устанавливает содержимое элемента, но значение аргумента в конечном итоге будет нулевым или пустой строкой.

Попробуй это:

$("p").html((0).toString())

Соответствующая документация

Небольшая придирка: это должно быть (0) .toString (). В противном случае он анализирует период как часть числа и получает синтаксическую ошибку.

Matthew Crumley 22.11.2008 08:52

Я думаю, вы пропустили часть того, как работает jQuery,

$('p')

возвращает все абзацы и функцию html (val):

Set the html contents of every matched element. This property is not available on XML documents (although it will work for XHTML documents).

http://docs.jquery.com/Attributes/html#val
Итак, если вы просто хотите установить содержимое для первого p, используйте

$("P").eq(0).html( 'something' );

или получить html:

$("P").eq(0).html();

http://docs.jquery.com/Core/eq#position
подробнее о селекторах jQuery здесь:
http://docs.jquery.com/Selectors

Я понимаю, как это работает, я просто заметил поведение, когда ему передается число 0.

Allain Lalonde 22.11.2008 19:01

Ой, извините, я думал, вы имели в виду, почему он не содержит html для 1-го абзаца

Pim Jager 22.11.2008 19:46

Попробуйте использовать text() вместо html().

Код, выполняющий вызов html, находился в чужом плагине, и вместо того, чтобы изменять его, что сделало его утомительным обновление, я просто написал следующий крошечный плагин, который изменяет метод html в соответствии с рекомендациями ложки16.

(function($) {
  var oldHtml = $.fn.html;
  $.fn.html = function (content) {
    oldHtml.apply(this, [content.toString()]);
  }
})(jQuery);

Это немного похоже на взлом, но он работает для меня и не требует от меня изменения плагина, который я использую.

Я просто подумал, что кому-то еще может понравиться это.

Другие вопросы по теме