2016-07-28 73 views
2

我使用設置跨度:測試特殊和HTML代碼

<span id=\"xxx\">&#9656;</span> 

誰能告訴我,爲什麼下面的測試不起作用:

if ($("#xxx").text() == "&#9656;") 
     alert("hello"); 
+0

這也可能是信息:入門HTML元素的原始文本內容與HTML解釋](http://stackoverflow.com/questions/15419209/getting-raw-text-content-of-html-element-with-html-un解釋) – showdev

回答

3

如果你不希望使用其他的答案,使直接符號條件$("#xxx").text() == "▸"並要檢查跨度文本&#9656;,你可以使用.charCodeAt(0)以獲得特殊symbole號碼,然後在你的條件添加&#;

var special_symbol_number = $("#xxx").text().charCodeAt(0); 

if ("&#"+special_symbol_number+";" === "&#9656;") 
    alert("hello"); 

或者你可以檢查只是作爲特殊的符號數:

if ($("#xxx").text().charCodeAt(0) === '9656') 
    alert("hello"); 

希望這有助於。

if ($("#xxx").text().charCodeAt(0) === '9656') 
 
    alert("hello");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<span id="xxx">9656</span>

+2

if($(「#xxx」)。text()。charCodeAt(0)==「9656」) –

+1

其實是的我同意Ben I認爲代碼是不夠的 – MarMan29

+0

好吧@ MarMan29我已經給答案添加了適當的條件..祝你好運。 –

3

因爲&#9656;實際上是這個人物

當你做$('#xxx').text()你會得到

嘗試做這種方式:

if ($("#xxx").text() == "▸") 
    alert("hello"); 

從看着這個鏈接的其他問題。貌似你在找什麼的方法是:

if ($("#xxx").text().charCodeAt() == '9656') 
    alert("hello"); 
+4

你如何測試▸ – MarMan29

1

「&#9656 ‌;」是適用於只有到HTML,而不是JavaScript。在HTML中,它被稱爲Entity,它被文字字符(▸)取代。但它不會在JavaScript中執行此操作。

要檢查JavaScript中的角色,只是把文字字面上:

if ($("#xxx").text() == "▸") 
    alert("hello"); 

您可以通過在瀏覽器中複製其獲得的字符(選擇▸,並創下CMD-C或CTRL-C ),然後將其粘貼到JavaScript文件中。

的HTML理由使用實體是因爲它有一些字符(比如<和>),可以被解析爲代碼的實際組成部分(嘗試在HTML編寫<文本>;它是不可見的,因爲HTML認爲你想要一個元素);即使它們看起來像代碼一樣,實體也可以直接解析這些值。這是一個工作片段,其中的JavaScript成功地檢查元素的內容:

if ($("#xxx").text() == "▸") 
 
    alert("hello");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<span id="xxx">&#9656;</span>

-1

或者,你可以這樣做:

<span id=\"xxx\">&amp;#9656;</span> 

if ($("#xxx").text() == "&#9656;") 
    alert("hello"); 
+0

瀏覽器不會以這種方式呈現特殊字符 – empiric

+0

我以爲OP想要檢查「▸」而不是文字字符。 – jonju

+0

是的,這是正確的,但▸圖標不會再顯示在前端。它會在字面上顯示'▸' – empiric