Javascript 如何将html实体与jQuery进行比较

Javascript 如何将html实体与jQuery进行比较,javascript,jquery,html-entities,Javascript,Jquery,Html Entities,我有以下html代码: <h3 id="headerid"><span onclick="expandCollapse('headerid')">&uArr;</span>Header title</h3> 我的函数总是沿着else路径运行。如果我制作一个javacript:alert ofarrow变量,我将得到一个表示为箭头的html实体。我如何告诉jQuery将arrow变量解释为字符串而不是html 看看效果 这是我之前玩过的类似

我有以下html代码:

<h3 id="headerid"><span onclick="expandCollapse('headerid')">&uArr;</span>Header title</h3>
我的函数总是沿着else路径运行。如果我制作一个javacript:alert of
arrow
变量,我将得到一个表示为箭头的html实体。我如何告诉jQuery将
arrow
变量解释为字符串而不是html

看看效果

这是我之前玩过的类似游戏

HTML:


也许你没有得到一个精确的匹配,因为浏览器是下套管的实体或东西。尝试使用克拉(^)和小写字母“v”进行测试


编辑-我的第一个理论完全错误。

解析HTML时,JQuery在DOM中看到的是一个向上的双箭头()⇑"), 不是实体引用。因此,在Javascript代码中,您应该测试
“⇑“
”\u21d1“
。此外,您需要更改要切换到的内容:

function expandCollapse(id) {
    var arrow = $("#"+id+" span").html();
    if(arrow == "\u21d1") {     
        $("#"+id+" span").html("\u21d3");                           
    } else {            
        $("#"+id+" span").html("\u21d1");                           
    }
}

如果您对
箭头发出警告,它会返回什么?它会返回您匹配的确切字符串吗?如果您得到的是实际字符
⇓'
'⇑'您可能需要将其与
“\u21D1”
“\u21D3”
匹配

此外,您可能希望尝试
以及
因为并非所有浏览器都支持这些实体

更新:下面是一个完全有效的示例:


使用类来表示量程的当前状态。 html可以如下所示

<h3 id="headerId"><span class="upArrow">&uArr;</span>Header title</h3>

这可能不是最好的方法,但它应该会起作用。我没有对它进行严格的测试

当我查看警报窗口时,我确实看到了一个“向上箭头”"。是否有关于此主题的进一步讨论,这里的答案没有解决我的问题,这与原始问题相同。请参阅我对工作示例所做的更新。您将希望使用您使用的确切箭头的unicode值来更新8657和8659。怪,成功了。谢谢。这感觉像是一个黑客,是否有错误ason为什么这么棘手?顺便说一句,我对stackoverflow社区还是相当陌生的,所以如果所有这些讨论都不合适,我很抱歉应该转移到一个新问题上来。
 $("#myStatic").bind("click", function(){
      $("#myNewTxt").val($("#myStatic").text());
      $("#myStatic,#myEdit").toggle();
 });
 $("#myOk").click(function(){
      $("#myStatic").text($("#myNewTxt").val());
      $("#myStatic,#myEdit").toggle();
 });
 $("#myX").click(function(){
      $("#myStatic,#myEdit").toggle();
 });
function expandCollapse(id) {
    var arrow = $("#"+id+" span").html();
    if(arrow == "\u21d1") {     
        $("#"+id+" span").html("\u21d3");                           
    } else {            
        $("#"+id+" span").html("\u21d1");                           
    }
}
window.expandCollapse = function (id) {   
  var $arrowSpan = $("#" + id + " span"),
      arrowCharCode = $arrowSpan.text().charCodeAt(0);

  // 8659 is the unicode value of the html entity
  if (arrowCharCode === 8659) {
    $arrowSpan.html("&#8657;");                           
  } else {            
    $arrowSpan.html("&#8659;");                           
  }

  // one liner:
  //$("#" + id + " span").html( ($("#" + id + " span").text().charCodeAt(0) === 8659) ? "&#8657;" : "&#8659;" );
};
<h3 id="headerId"><span class="upArrow">&uArr;</span>Header title</h3>
$( '.upArrow, .downArrow' ).click( function( span ) {
    if ( span.hasClass( 'upArrow' ) )
        span.text( "&dArr;" );
    else
        span.text( "&uArr;" );
    span.toggleClass( 'upArrow' );
    span.toggleClass( 'downArrow' );
} );