admin管理员组文章数量:1026989
I've got a collapsible link which has the unicode arrow on it
►This is a collapsible link
And when someone clicks on it I want it to be turned into the down arrow ▼. However I am having trouble figuring out how to parse to replace this character.
Here is my code:
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"));
}
Now the first alert always pops up as the actual arrow (►) and viewing the source also has the actual arrow. How can I see if the first character is one arrow, and if so replace it with the other arrow? The second alert statement never fires so it's never passing the condition of the if.
I've got a collapsible link which has the unicode arrow on it
►This is a collapsible link
And when someone clicks on it I want it to be turned into the down arrow ▼. However I am having trouble figuring out how to parse to replace this character.
Here is my code:
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"));
}
Now the first alert always pops up as the actual arrow (►) and viewing the source also has the actual arrow. How can I see if the first character is one arrow, and if so replace it with the other arrow? The second alert statement never fires so it's never passing the condition of the if.
Share Improve this question asked Dec 8, 2010 at 4:25 SventoryMangSventoryMang 10.5k15 gold badges74 silver badges117 bronze badges 2-
1
Make sure you've got the right key code, as well - ► as you have in your question is
\u25ba
,\u25b8
is the smaller arrow ▸. – Chris Morgan Commented Dec 8, 2010 at 4:32 -
1
In the future, keep an extra eye on JS syntax errors. You should have spotted this soon enough. In Firefox, hit
Ctrl+Shift+J
to see the JS error console. Or, better, install Firebug. – BalusC Commented Dec 8, 2010 at 4:34
3 Answers
Reset to default 8You have multiple errors in your if
statement, this is why that branch is never hit.
if ($(this).text.trim().charAt(0) == "\u25B8"{
You forgot the closing )
of the if
statement.
Also, you're not invoking the text()
method, you're trying to access it as a member, which it isn't.
Your code should look like this:
if ($(this).text().trim().charAt(0) == "\u25B8") {
charCodeAt(index)
returns the integer unicode value of the character at the specified index. This is often the easiest way to test individual char values -- especially when they're non-printable, or special in some other way. (docs at w3schools)
Also... be sure you're paring the correct unicode values. "\u25B8"
is the "small right arrow" (▸
) -- but the arrow you showed in your example is the "large right arrow", which is "\u25BA"
(►
)
so... a simple example using charCodeAt()
and the correct unicode value:
var s = "►This is a collapsible link";
if(s.charCodeAt(0) === 0x25BA) {
alert( "true!");
}
You can solve this with css and jQuery, too:
CSS:
.collapsible_link:before { content: "\25BC"; }
.collapsed_link:before { content: "\25BA"; }
jQuery:
$('#link').click(function(o) {
$(o).toggleClass('collapsible_link collapsed_link');
});
I've got a collapsible link which has the unicode arrow on it
►This is a collapsible link
And when someone clicks on it I want it to be turned into the down arrow ▼. However I am having trouble figuring out how to parse to replace this character.
Here is my code:
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"));
}
Now the first alert always pops up as the actual arrow (►) and viewing the source also has the actual arrow. How can I see if the first character is one arrow, and if so replace it with the other arrow? The second alert statement never fires so it's never passing the condition of the if.
I've got a collapsible link which has the unicode arrow on it
►This is a collapsible link
And when someone clicks on it I want it to be turned into the down arrow ▼. However I am having trouble figuring out how to parse to replace this character.
Here is my code:
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"));
}
Now the first alert always pops up as the actual arrow (►) and viewing the source also has the actual arrow. How can I see if the first character is one arrow, and if so replace it with the other arrow? The second alert statement never fires so it's never passing the condition of the if.
Share Improve this question asked Dec 8, 2010 at 4:25 SventoryMangSventoryMang 10.5k15 gold badges74 silver badges117 bronze badges 2-
1
Make sure you've got the right key code, as well - ► as you have in your question is
\u25ba
,\u25b8
is the smaller arrow ▸. – Chris Morgan Commented Dec 8, 2010 at 4:32 -
1
In the future, keep an extra eye on JS syntax errors. You should have spotted this soon enough. In Firefox, hit
Ctrl+Shift+J
to see the JS error console. Or, better, install Firebug. – BalusC Commented Dec 8, 2010 at 4:34
3 Answers
Reset to default 8You have multiple errors in your if
statement, this is why that branch is never hit.
if ($(this).text.trim().charAt(0) == "\u25B8"{
You forgot the closing )
of the if
statement.
Also, you're not invoking the text()
method, you're trying to access it as a member, which it isn't.
Your code should look like this:
if ($(this).text().trim().charAt(0) == "\u25B8") {
charCodeAt(index)
returns the integer unicode value of the character at the specified index. This is often the easiest way to test individual char values -- especially when they're non-printable, or special in some other way. (docs at w3schools)
Also... be sure you're paring the correct unicode values. "\u25B8"
is the "small right arrow" (▸
) -- but the arrow you showed in your example is the "large right arrow", which is "\u25BA"
(►
)
so... a simple example using charCodeAt()
and the correct unicode value:
var s = "►This is a collapsible link";
if(s.charCodeAt(0) === 0x25BA) {
alert( "true!");
}
You can solve this with css and jQuery, too:
CSS:
.collapsible_link:before { content: "\25BC"; }
.collapsed_link:before { content: "\25BA"; }
jQuery:
$('#link').click(function(o) {
$(o).toggleClass('collapsible_link collapsed_link');
});
本文标签: JavaScriptJQuerycheck if charAt() is equal to a unicode characterStack Overflow
版权声明:本文标题:javascript - Jquery, check if charAt() is equal to a unicode character? - Stack Overflow 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/questions/1740125207a1716388.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论