2016-12-09 37 views
0

HTML的Javascript比较HTML实体名称

<button id="the_button" onclick="clicked()">&darr; Source &darr;</button> 

的Javascript

function clicked() { 
    if ($("#the_button").html() == "&darr; Source &darr;") { 
     alert($("#the_button").html()); 
    } 
} 

与上面的代码,我没有得到一个警报弹出...

但是,如果我将按钮文本和比较字符串更改为仅含有HTML实体的Source,则它可以工作:

HTML

<button id="the_button" onclick="clicked()">Source</button> 

的Javascript

function clicked() { 
    if ($("#the_button").html() == "Source") { 
     alert($("#the_button").html()); 
    } 
} 

有没有办法把它与HTML实体&darr;工作?

+1

请问,如果你比较' “\ u2193来源\ u2193”'工作? – Pointy

+2

在任何情况下,使用'

+1

这是一个不太理想的设计,但如果您不想处理html实体,请将箭头和文本'Source'包装在3个区域中,只检查包含'Source'的中间区域的html。我假设你将有多个使用'clicked()'函数作为处理程序的按钮? – Shilly

回答

3

我相信JS看到的实体,而不是参考。尝试使用向下箭头的Unicode字符引用(\u2193)。

var $btn = $('#the_button'); 
 

 
$btn.on('click', function() { 
 

 
    var html = $btn.html(); // or .text() 
 
    
 
    if ('\u2193 Source \u2193' === html) { 
 
    \t alert(html); 
 
    } 
 
    
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button id="the_button">&darr; Source &darr;</button>

有用的参考:Unicode Table(提供Unicode和HTML参考文献)。

2

这应该工作:

function clicked() { 
    if ($("#the_button").html() == '\u2193 Source \u2193') { 
     alert($("#the_button").html()); 
    } 
} 
1

您可以使用假元素藏汉

function clicked() { 
    if ($("#the_button").text() === $('<span>&darr; Source &darr;</span>').text()) { 
     // .... 
    } 
}