【问题标题】:Get HTML entity of character symbol in jQuery在jQuery中获取字符符号的HTML实体
【发布时间】:2020-07-03 22:43:46
【问题描述】:

如果a中存在平方根符号,我喜欢将其涂成绿色。所以我有这样的事情:

<div class=”cell”>foo</div>
<div class=”cell”>bar</div>
<div class=”cell”>&radic;</div>
<div class=”cell”>foo</div>
<div class=”cell”>&radic;</div>

我对 jQuery 的尝试:

$(".value_spec_table_description_div_cs").each(function(){

    if ($(this).html() === "&radic;"){
        $(this).css("color" , "rgba(0,128,0,1.0)");
        }
    });

不幸的是,html() 似乎没有再次将符号 √ 转换为 HTML 实体,因此该语句永远不会返回 true。

我尝试了很多:

var test = $("#table").html();

var html = $("<textarea/>").html(test).html();

alert(html);

每个特殊字符都在实体中,除非根方符号 变为 &amp;radic;。我该如何解决这个问题?

【问题讨论】:

    标签: jquery html entity symbols


    【解决方案1】:

    浏览器在将 HTML 转换为 DOM 时会对其进行规范化。除了发出 Ajax 请求来获取页面的源代码、编写自定义解析器、找到您关心的 HTML 以及比较 之外,您真的无法做到这一点。

    最好只比较文本:

    if ($(this).text() === "√"){
    

    【讨论】:

      【解决方案2】:

      就像@Quentin 所说的那样。 jQuery 看到的是渲染的字符'√' 而不是'&amp;radic;'。要么将其与渲染的字符进行比较,要么将其与 unicode 等效的 '\u221A' 进行比较,如下所示:

      $('.cell').each(function () {
          if ($(this).text() === '\u221A') {
              $(this).css('color', 'rgba(0, 128, 0, 1.0)');
          }
      });
      

      【讨论】:

        猜你喜欢
        • 2022-01-05
        • 2023-03-31
        • 1970-01-01
        • 1970-01-01
        • 2023-03-11
        • 2013-10-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多