2010-12-08 3 views
1

私はそれJquery、charAt()がUnicode文字と等しいかどうかを確認しますか?

►This is a collapsible link 

にUnicodeの矢印を持って折りたたみ可能なリンクを持っていると、誰かがそれをクリックしたとき、私はそれが下矢印▼に変えることにしたいです。しかし、私はこの文字を置き換えるために解析する方法を考え出すのに問題があります。また、実際の矢印を持ってい

function CollapsibleContainerTitleClickApp(){ 
    $(".collapsibleContainerContent.app", $(this).parent()).slideToggle(); 
    alert($(this).text().trim().charAt(0)); 
    if ($(this).text.trim().charAt(0) == "\u25B8"{ 
     alert("inside the if statement"); 
     $(this).text($(this).text().replace("\u25B8", "\u25BE")); 
    }else{ 
     $(this).text($(this).text().replace("\u25BE", "\u25B8")); 
} 

今すぐ最初の警告は、常に実際の矢印(►)としてポップアップし、ソースを表示:

は、ここに私のコードです。最初の文字が1つの矢印であるかどうかを確認するには、どうすればいいですか? 2番目の警告文は決して起動しないので、ifの条件を渡すことはありません。

+1

はあなたにも、右キーコードを持っていることを確認してください - ►を、あなたの疑問を持っているとして、 '\のu25ba'、' \のu25b8'が小さい矢印▸です。 –

+1

今後、JS構文エラーに注意してください。すぐにこれを見つけたはずです。 Firefoxでは、 'Ctrl + Shift + J'を押してJSエラーコンソールを表示します。または、より良い方法で、[Firebug](http://getfirebug.com)をインストールしてください。 – BalusC

答えて

7

あなたは、その枝がヒットされることはありません、なぜこれは、あなたのif文で複数のエラーがあります。

if ($(this).text.trim().charAt(0) == "\u25B8"{ 

あなたはif声明の閉鎖)を忘れてしまいました。

また、あなたはそれがないメンバーとしてそれにアクセスしようとしている、text()メソッドを呼び出していません。

あなたのコードは次のようになります。

if ($(this).text().trim().charAt(0) == "\u25B8") { 
+0

うわーは私がそのことを逃したと信じることができない...私は長い間してきた... – SventoryMang

+0

これもval()。charAt(n)のために働く:) –

1

charCodeAt(index)は、指定されたインデックスの文字の整数Unicode値を返します。これは、個々の文字の値をテストする最も簡単な方法です。特に、印刷できない場合や、他の方法で特殊な場合は特に便利です。 (docs at w3schools)

また、正しいユニコード値を比較していることを確認してください。 "\u25B8"は「小さな右矢印」()である - しかし、あなたはあなたの例で示した矢印は、「大規模な右矢印」で、"\u25BA"

そう... charCodeAt()を使った簡単な例であると正しいUnicode値:あなたはあまりにも、CSSとjQueryを使ってこの問題を解決することができます

var s = "►This is a collapsible link"; 
if(s.charCodeAt(0) === 0x25BA) { 
    alert("true!"); 
} 
2

CSS:

.collapsible_link:before { content: "\25BC"; } 
.collapsed_link:before { content: "\25BA"; } 

のjQuery:

$('#link').click(function(o) { 
    $(o).toggleClass('collapsible_link collapsed_link'); 
}); 
関連する問題