为什么$(“p”)。html(0)使所有段落为空而不是包含字符'0'的任何理由?
而不是假设我在jQuery中发现了一个错误,这可能是我的一个误解。
答案 0 :(得分:5)
jQuery只接受一个字符串作为val
方法的html()
参数的参数。如果你传递一个像你一样的数字,它将调用html()
方法覆盖设置元素的内容,但参数的值最终将为null或空字符串。
试试这个:
$("p").html((0).toString())
答案 1 :(得分:0)
我想在某些时候,它会检查if (newContent == false)
,并且不会继续添加任何内容?我试着查看源代码,但有点迷失......
我还猜测这不会被视为错误,因为函数会调用字符串,如果传递“0”(作为字符串),它会按预期工作。
解决方法是:
var myNum = 0;
$('p').html('' + myNum);
答案 2 :(得分:0)
尝试使用text()
代替html()
。
答案 3 :(得分:0)
执行html调用的代码在别人的插件中,而不是修改它,使升级变得乏味,我只是编写了下面的小插件,修改了html
方法,以推荐使用spoon16。
(function($) {
var oldHtml = $.fn.html;
$.fn.html = function (content) {
oldHtml.apply(this, [content.toString()]);
}
})(jQuery);
这有点像黑客,但它对我有用,并不要求我修改我正在使用的插件。
我只是觉得别人可能会想看到这个。
答案 4 :(得分:-1)
我猜你错过了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").eq(0).html( 'something' );
或获取html:
$("P").eq(0).html();
http://docs.jquery.com/Core/eq#position
更多关于jQuery选择器的信息:
http://docs.jquery.com/Selectors