Jquery, проверьте, если charAt () равен символу Unicode? - PullRequest
2 голосов
/ 08 декабря 2010

У меня есть разборная ссылка, на которой есть стрелка Юникода

►This is a collapsible link

И когда кто-то нажимает на него, я хочу, чтобы он превратился в стрелку вниз ▼. Однако я не могу понять, как разобрать, чтобы заменить этот символ.

Вот мой код:

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"));
}

Теперь первое предупреждение всегда всплывает как актуальная стрелка (►), и при просмотре источника также есть актуальная стрелка. Как узнать, является ли первый символ одной стрелкой, и если да, заменить его другой стрелкой? Второе оповещение никогда не срабатывает, поэтому оно никогда не проходит условие if.

Ответы [ 3 ]

8 голосов
/ 08 декабря 2010

В вашем операторе if есть несколько ошибок, поэтому эта ветвь никогда не попадет.

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

Вы забыли о закрытии ) оператора if.

Кроме того, вы не вызываете метод text(), вы пытаетесь получить к нему доступ как к члену, а это не так.

Ваш код должен выглядеть следующим образом:

if ($(this).text().trim().charAt(0) == "\u25B8") {
2 голосов
/ 27 марта 2012

Вы также можете решить эту проблему с помощью CSS и JQuery:

CSS:

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

JQuery:

$('#link').click(function(o) {
   $(o).toggleClass('collapsible_link collapsed_link');
});
1 голос
/ 08 декабря 2010

charCodeAt(index) возвращает целочисленное значение Unicode символа по указанному индексу.Часто это самый простой способ проверить отдельные значения символов - особенно когда они не распечатываются или используются каким-либо иным образом. (документы в w3schools)

Также ... убедитесь, что вы сравниваете правильные значения Unicode."\u25B8" - это «маленькая стрелка вправо» (), но стрелка, которую вы показали в своем примере, это «большая стрелка вправо», которая равна "\u25BA" ()

... простой пример использования charCodeAt() и правильного значения Unicode:

var s = "►This is a collapsible link";
if(s.charCodeAt(0) === 0x25BA) {
   alert( "true!");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...