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



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я предполагаю, что в какой-то момент он проверяет if (newContent == false) и не продолжает добавлять какой-либо контент? Я попытался посмотреть на источник, но немного заблудился ...
Я также предполагаю, что это не будет считаться ошибкой, поскольку функция вызывает строку, и если передается «0» (как строка), она работает, как ожидалось.
Обходной путь был бы сделать это:
var myNum = 0;
$('p').html('' + myNum);
jQuery принимает только строку в качестве аргумента для параметра val метода html(). Если вы передадите число, как вы, оно вызовет переопределение метода html(), которое устанавливает содержимое элемента, но значение аргумента в конечном итоге будет нулевым или пустой строкой.
Попробуй это:
$("p").html((0).toString())
Небольшая придирка: это должно быть (0) .toString (). В противном случае он анализирует период как часть числа и получает синтаксическую ошибку.
Я думаю, вы пропустили часть того, как работает 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.
Ой, извините, я думал, вы имели в виду, почему он не содержит html для 1-го абзаца
Попробуйте использовать text() вместо html().
Код, выполняющий вызов html, находился в чужом плагине, и вместо того, чтобы изменять его, что сделало его утомительным обновление, я просто написал следующий крошечный плагин, который изменяет метод html в соответствии с рекомендациями ложки16.
(function($) {
var oldHtml = $.fn.html;
$.fn.html = function (content) {
oldHtml.apply(this, [content.toString()]);
}
})(jQuery);
Это немного похоже на взлом, но он работает для меня и не требует от меня изменения плагина, который я использую.
Я просто подумал, что кому-то еще может понравиться это.
Ваша формулировка сбивает с толку. Может быть: "... вместо символа 0?" кстати, $ ('p'). html ('0') работает.