簡體   English   中英

jQuery的html方法中的怪異行為

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM