[英]Weird Behaviour in jQuery's html method
任何好的理由为什么$(“p”)。html(0)使所有段落为空而不是包含字符'0'?
而不是假设我在jQuery中发现了一个错误,这可能是我的一个误解。
jQuery只接受一个字符串作为html()
方法的val
参数的参数。 如果你传递一个像你一样的数字,它将调用html()
方法覆盖设置元素的内容,但参数的值最终将为null或空字符串。
试试这个:
$("p").html((0).toString())
我想在某些时候,它检查if (newContent == false)
,并且不继续添加任何内容? 我试着查看源代码,但有点迷失了......
我也猜测这不会被视为一个错误,因为函数调用一个字符串,如果传递“0”(作为一个字符串),它按预期工作。
解决方法是这样做:
var myNum = 0;
$('p').html('' + myNum);
尝试使用text()
而不是html()
。
执行html调用的代码在别人的插件中,而不是修改它,使升级变得乏味,我只是写了下面的小插件,修改了html
方法,就像spoon16推荐的那样。
(function($) {
var oldHtml = $.fn.html;
$.fn.html = function (content) {
oldHtml.apply(this, [content.toString()]);
}
})(jQuery);
这有点像黑客,但它对我有用,并不要求我修改我正在使用的插件。
我只是觉得别人可能会喜欢看到这个。
我想你错过了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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.