[英]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.