【问题标题】:Weird Behaviour in jQuery's html methodjQuery 的 html 方法中的奇怪行为
【发布时间】:2023-03-13 17:22:01
【问题描述】:

$("p").html(0) 让所有段落为空而不是包含字符 '0' 的任何充分理由?

与其假设我在 jQuery 中发现了一个错误,这可能是我的一个误解。

【问题讨论】:

  • 您的措辞令人困惑。也许:“...而不是包含字符 0?”顺便说一句,$('p').html('0') 有效。
  • 是的,我知道它有效,只是不是我需要的。反正找到了解决办法。

标签: javascript jquery


【解决方案1】:

jQuery 只接受一个字符串作为 html() 方法的 val 参数的参数。如果你传递一个像你这样的数字,它将调用 html() 方法覆盖设置元素的内容,但参数的值最终将为 null 或空字符串。

试试这个:

$("p").html((0).toString())

Relevant documentation

【讨论】:

  • 只是一个小问题:应该是 (0).toString()。否则,它会将句点解析为数字的一部分并出现语法错误。
【解决方案2】:

我猜它在某个时候会检查if (newContent == false),并且不会继续添加任何内容?我试图查看源代码,但有点迷失......

我也猜想这不会被算作一个错误,因为该函数需要一个字符串,如果传递“0”(作为一个字符串),它会按预期工作。

解决方法是这样做:

var myNum = 0;
$('p').html('' + myNum);

【讨论】:

    【解决方案3】:

    执行 html 调用的代码在其他人的插件中,我没有修改它,因此升级它很乏味,我只是编写了以下小插件,它修改了 html 方法以按照 spoon16 的建议进行操作。

    (function($) {
      var oldHtml = $.fn.html;
      $.fn.html = function (content) {
        oldHtml.apply(this, [content.toString()]);
      }
    })(jQuery);
    

    这有点小技巧,但它对我有用,不需要我修改我正在使用的插件。

    我只是觉得其他人可能会喜欢看这个。

    【讨论】:

      【解决方案4】:

      尝试使用text() 代替html()

      【讨论】:

        【解决方案5】:

        我猜你错过了 jQuery 的部分工作原理,

        $('p')
        

        返回所有段落和 html(val) 函数:

        设置每个匹配元素的 html 内容。此属性在 XML 文档上不可用(尽管它适用于 XHTML 文档)。

        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
        猜你喜欢
        • 1970-01-01
        • 2019-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多